
























@@ -67,8 +67,26 @@ const CLAUDE_LEGACY_SKIP_PERMISSIONS_ARG = "--dangerously-skip-permissions";
6767const CLAUDE_PERMISSION_MODE_ARG = "--permission-mode";
6868const CLAUDE_SETTING_SOURCES_ARG = "--setting-sources";
6969const CLAUDE_EFFORT_ARG = "--effort";
70+const CLAUDE_BARE_ARG = "--bare";
71+const CLAUDE_SAFE_MODE_ARG = "--safe-mode";
72+const CLAUDE_TOOLS_ARG = "--tools";
73+const CLAUDE_DISALLOWED_TOOLS_ARG = "--disallowedTools";
74+const CLAUDE_MCP_CONFIG_ARG = "--mcp-config";
75+const CLAUDE_STRICT_MCP_CONFIG_ARG = "--strict-mcp-config";
76+const CLAUDE_NO_SESSION_PERSISTENCE_ARG = "--no-session-persistence";
77+const CLAUDE_MAX_TURNS_ARG = "--max-turns";
78+const CLAUDE_SESSION_ID_ARG = "--session-id";
79+const CLAUDE_RESUME_ARG = "--resume";
80+const CLAUDE_RESUME_SESSION_AT_ARG = "--resume-session-at";
81+const CLAUDE_RESUME_SHORT_ARG = "-r";
82+const CLAUDE_CONTINUE_ARG = "--continue";
83+const CLAUDE_CONTINUE_SHORT_ARG = "-c";
84+const CLAUDE_FORK_SESSION_ARG = "--fork-session";
7085const CLAUDE_SAFE_SETTING_SOURCES = "user";
7186const CLAUDE_BYPASS_PERMISSION_MODE = "bypassPermissions";
87+const CLAUDE_DEFAULT_PERMISSION_MODE = "default";
88+const CLAUDE_NO_TOOLS_VALUE = "";
89+const CLAUDE_DENY_MCP_TOOLS_VALUE = "mcp__*";
72907391type ClaudeCliEffort = "low" | "medium" | "high" | "xhigh" | "max";
7492@@ -232,10 +250,89 @@ function stripClaudeEffortArgs(args: readonly string[]): string[] {
232250return normalized;
233251}
234252253+const CLAUDE_SIDE_QUESTION_VARIADIC_VALUE_ARGS = new Set([
254+"--allowedTools",
255+"--allowed-tools",
256+CLAUDE_DISALLOWED_TOOLS_ARG,
257+"--disallowed-tools",
258+CLAUDE_TOOLS_ARG,
259+CLAUDE_MCP_CONFIG_ARG,
260+]);
261+262+const CLAUDE_SIDE_QUESTION_VALUE_ARGS = new Set([
263+CLAUDE_PERMISSION_MODE_ARG,
264+CLAUDE_SESSION_ID_ARG,
265+CLAUDE_RESUME_ARG,
266+CLAUDE_RESUME_SESSION_AT_ARG,
267+CLAUDE_RESUME_SHORT_ARG,
268+CLAUDE_MAX_TURNS_ARG,
269+]);
270+271+const CLAUDE_SIDE_QUESTION_BARE_ARGS = new Set([
272+CLAUDE_CONTINUE_ARG,
273+CLAUDE_CONTINUE_SHORT_ARG,
274+CLAUDE_FORK_SESSION_ARG,
275+CLAUDE_BARE_ARG,
276+CLAUDE_SAFE_MODE_ARG,
277+CLAUDE_STRICT_MCP_CONFIG_ARG,
278+CLAUDE_NO_SESSION_PERSISTENCE_ARG,
279+]);
280+281+function stripClaudeSideQuestionConflictingArgs(args: readonly string[]): string[] {
282+const normalized: string[] = [];
283+for (let i = 0; i < args.length; i += 1) {
284+const arg = args[i] ?? "";
285+const equalsIndex = arg.indexOf("=");
286+const argName = equalsIndex > 0 ? arg.slice(0, equalsIndex) : arg;
287+if (CLAUDE_SIDE_QUESTION_BARE_ARGS.has(argName)) {
288+continue;
289+}
290+if (CLAUDE_SIDE_QUESTION_VARIADIC_VALUE_ARGS.has(argName)) {
291+if (equalsIndex < 0) {
292+while (typeof args[i + 1] === "string" && !args[i + 1]?.startsWith("-")) {
293+i += 1;
294+}
295+}
296+continue;
297+}
298+if (CLAUDE_SIDE_QUESTION_VALUE_ARGS.has(argName)) {
299+if (equalsIndex < 0) {
300+const maybeValue = args[i + 1];
301+if (typeof maybeValue === "string" && !maybeValue.startsWith("-")) {
302+i += 1;
303+}
304+}
305+continue;
306+}
307+normalized.push(arg);
308+}
309+return normalized;
310+}
311+312+function resolveClaudeCliSideQuestionExecutionArgs(baseArgs: readonly string[]): string[] {
313+return [
314+ ...stripClaudeSideQuestionConflictingArgs(stripClaudeEffortArgs(baseArgs)),
315+CLAUDE_SAFE_MODE_ARG,
316+CLAUDE_TOOLS_ARG,
317+CLAUDE_NO_TOOLS_VALUE,
318+CLAUDE_DISALLOWED_TOOLS_ARG,
319+CLAUDE_DENY_MCP_TOOLS_VALUE,
320+CLAUDE_STRICT_MCP_CONFIG_ARG,
321+CLAUDE_NO_SESSION_PERSISTENCE_ARG,
322+CLAUDE_MAX_TURNS_ARG,
323+"1",
324+CLAUDE_PERMISSION_MODE_ARG,
325+CLAUDE_DEFAULT_PERMISSION_MODE,
326+];
327+}
328+235329/** Resolve final Claude CLI execution args for one backend invocation. */
236330export function resolveClaudeCliExecutionArgs(
237331context: CliBackendResolveExecutionArgsContext,
238332): string[] {
333+if (context.executionMode === "side-question") {
334+return resolveClaudeCliSideQuestionExecutionArgs(context.baseArgs);
335+}
239336const effort = mapClaudeCliThinkingLevelToEffort(context.thinkingLevel);
240337if (!effort) {
241338return [...context.baseArgs];
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。