feat(coding-agent): extended --thinking CLI flag options

- Added `off` and `auto` as valid inputs for the `--thinking` CLI flag.
- Centralized thinking level definitions in `CLI_THINKING_LEVELS` to keep flag options, shell completions, and validation in sync.
- Configured CLI parsing to reject `inherit` as an explicit input to prevent unintended configuration suppression.
This commit is contained in:
can1357
2026-06-23 01:46:36 +02:00
parent 1dd78b207e
commit 6ff37e346a
7 changed files with 60 additions and 12 deletions
+4 -5
View File
@@ -1,10 +1,9 @@
/**
* CLI argument parsing and help display
*/
import { type Effort, THINKING_EFFORTS } from "@oh-my-pi/pi-catalog/effort";
import { APP_NAME, CONFIG_DIR_NAME, logger } from "@oh-my-pi/pi-utils";
import chalk from "chalk";
import { parseEffort } from "../thinking";
import { CLI_THINKING_LEVELS, type ConfiguredThinkingLevel, parseCliThinkingLevel } from "../thinking";
import { BUILTIN_TOOL_NAMES } from "../tools/builtin-names";
import {
OPTIONAL_FLAGS,
@@ -32,7 +31,7 @@ export interface Args {
apiKey?: string;
systemPrompt?: string;
appendSystemPrompt?: string;
thinking?: Effort;
thinking?: ConfiguredThinkingLevel;
hideThinking?: boolean;
advisor?: boolean;
continue?: boolean;
@@ -89,9 +88,9 @@ export interface Args {
*/
const PARSE_DEPS: ParseDeps = {
logger,
parseEffort,
parseThinking: parseCliThinkingLevel,
builtinToolNames: BUILTIN_TOOL_NAMES,
thinkingEfforts: THINKING_EFFORTS,
thinkingEfforts: CLI_THINKING_LEVELS,
};
export function parseArgs(inputArgs: string[], extensionFlags?: Map<string, { type: "boolean" | "string" }>): Args {
+3 -3
View File
@@ -30,7 +30,7 @@
* real implementations at the dispatch site.
*/
import type { Effort } from "@oh-my-pi/pi-ai";
import type { ConfiguredThinkingLevel } from "../thinking";
import type { Args } from "./args";
/**
@@ -44,7 +44,7 @@ import type { Args } from "./args";
*/
export interface ParseDeps {
logger: { warn: (message: string, meta?: Record<string, unknown>) => void };
parseEffort: (value: string | null | undefined) => Effort | undefined;
parseThinking: (value: string | null | undefined) => ConfiguredThinkingLevel | undefined;
builtinToolNames: readonly string[];
thinkingEfforts: readonly string[];
}
@@ -165,7 +165,7 @@ export const STRING_SETTERS: Record<string, StringSetter> = {
result.tools = valid;
},
"--thinking": (result, value, deps) => {
const thinking = deps.parseEffort(value);
const thinking = deps.parseThinking(value);
if (thinking !== undefined) {
result.thinking = thinking;
} else {