Add support for reading Claude Code settings from ~/.claude/settings.json
ci / check (macos-latest) (push) Canceled after 0s
ci / check (ubuntu-latest) (push) Canceled after 0s
ci / check (windows-latest) (push) Canceled after 0s

This commit is contained in:
asepharyana committed 2026-09-03 17:39:34 +07:00
1 parent 6452299a45
commit 3090e477e3
3 files changed
+61 -7

No files matched your search

+15 -2
View File
@@ -7,6 +7,7 @@ import { join } from 'node:path';
import { withFallback, type FallbackEvent } from './fallback';
import type { McpServerConfig } from './mcp';
import { parsePermissions, type PermissionConfig } from './permission';
import { readClaudeCodeSettings } from './providers';
import { isToolSetName, type ToolSetName } from './tools';
export type ProviderName = 'anthropic' | 'openai';
@@ -83,11 +84,23 @@ export async function loadConfig(): Promise<Config> {
const envProvider = process.env['SHIRO_PROVIDER'];
const provider = isProvider(envProvider) ? envProvider : isProvider(file.provider) ? file.provider : 'anthropic';
// When using the claude-code preset, read from ~/.claude/settings.json
const isClaudeCode = file.presetId === 'claude-code';
const claudeSettings = isClaudeCode ? await readClaudeCodeSettings() : {};
return {
provider,
model: process.env['SHIRO_MODEL'] ?? file.model ?? DEFAULT_MODEL[provider],
baseURL: process.env['SHIRO_BASE_URL'] ?? file.baseURL ?? DEFAULT_BASE_URL[provider],
apiKey: process.env['SHIRO_API_KEY'] ?? file.apiKey ?? process.env[ENV_KEY[provider]],
baseURL:
process.env['SHIRO_BASE_URL'] ??
file.baseURL ??
claudeSettings.baseURL ??
DEFAULT_BASE_URL[provider],
apiKey:
process.env['SHIRO_API_KEY'] ??
file.apiKey ??
claudeSettings.apiKey ??
process.env[ENV_KEY[provider]],
...(file.presetId ? { presetId: file.presetId } : {}),
...(file.maxRetries !== undefined ? { maxRetries: file.maxRetries } : {}),
...(file.agent ? { agent: file.agent } : {}),