mirror of
https://github.com/wu736139669/hapi.git
synced 2026-08-05 06:24:37 +00:00
feat: add --model parameter support to command handlers
Pass model selection through command pipeline to enable model switching during runtime close #83, close #64
This commit is contained in:
@@ -19,6 +19,7 @@ export async function runCodex(opts: {
|
||||
codexArgs?: string[];
|
||||
permissionMode?: PermissionMode;
|
||||
resumeSessionId?: string;
|
||||
model?: string;
|
||||
}): Promise<void> {
|
||||
const workingDirectory = process.cwd();
|
||||
const startedBy = opts.startedBy ?? 'terminal';
|
||||
@@ -48,6 +49,7 @@ export async function runCodex(opts: {
|
||||
const sessionWrapperRef: { current: CodexSession | null } = { current: null };
|
||||
|
||||
let currentPermissionMode: PermissionMode = opts.permissionMode ?? 'default';
|
||||
const currentModel = opts.model;
|
||||
|
||||
const lifecycle = createRunnerLifecycle({
|
||||
session,
|
||||
@@ -72,7 +74,8 @@ export async function runCodex(opts: {
|
||||
logger.debug(`[Codex] User message received with permission mode: ${currentPermissionMode}`);
|
||||
|
||||
const enhancedMode: EnhancedMode = {
|
||||
permissionMode: messagePermissionMode ?? 'default'
|
||||
permissionMode: messagePermissionMode ?? 'default',
|
||||
model: currentModel
|
||||
};
|
||||
const formattedText = formatMessageWithAttachments(message.content.text, message.content.attachments);
|
||||
messageQueue.push(formattedText, enhancedMode);
|
||||
|
||||
@@ -41,6 +41,13 @@ export const claudeCommand: CommandDefinition = {
|
||||
} else if (arg === '--dangerously-skip-permissions') {
|
||||
options.permissionMode = 'bypassPermissions'
|
||||
unknownArgs.push(arg)
|
||||
} else if (arg === '--model') {
|
||||
const model = args[++i]
|
||||
if (!model) {
|
||||
throw new Error('Missing --model value')
|
||||
}
|
||||
options.model = model
|
||||
unknownArgs.push('--model', model)
|
||||
} else if (arg === '--started-by') {
|
||||
options.startedBy = args[++i] as 'runner' | 'terminal'
|
||||
} else {
|
||||
|
||||
@@ -17,6 +17,7 @@ export const codexCommand: CommandDefinition = {
|
||||
codexArgs?: string[]
|
||||
permissionMode?: CodexPermissionMode
|
||||
resumeSessionId?: string
|
||||
model?: string
|
||||
} = {}
|
||||
const unknownArgs: string[] = []
|
||||
|
||||
@@ -36,6 +37,13 @@ export const codexCommand: CommandDefinition = {
|
||||
} else if (arg === '--yolo' || arg === '--dangerously-bypass-approvals-and-sandbox') {
|
||||
options.permissionMode = 'yolo'
|
||||
unknownArgs.push(arg)
|
||||
} else if (arg === '--model') {
|
||||
const model = commandArgs[++i]
|
||||
if (!model) {
|
||||
throw new Error('Missing --model value')
|
||||
}
|
||||
options.model = model
|
||||
unknownArgs.push('--model', model)
|
||||
} else {
|
||||
unknownArgs.push(arg)
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ export const geminiCommand: CommandDefinition = {
|
||||
startedBy?: 'runner' | 'terminal'
|
||||
startingMode?: 'local' | 'remote'
|
||||
permissionMode?: GeminiPermissionMode
|
||||
model?: string
|
||||
} = {}
|
||||
|
||||
for (let i = 0; i < commandArgs.length; i++) {
|
||||
@@ -29,6 +30,12 @@ export const geminiCommand: CommandDefinition = {
|
||||
}
|
||||
} else if (arg === '--yolo') {
|
||||
options.permissionMode = 'yolo'
|
||||
} else if (arg === '--model') {
|
||||
const model = commandArgs[++i]
|
||||
if (!model) {
|
||||
throw new Error('Missing --model value')
|
||||
}
|
||||
options.model = model
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user