feat(v2): add Claude profile switching, skill discovery, and extended agent options

Add switcher-claude multi-account support with profile selector in AgentPane
toolbar, skill autocomplete menu (type / in prompt), and 5 new AgentQueryOptions
fields (setting_sources, system_prompt, model, claude_config_dir,
additional_directories) flowing through full stack from Rust to SDK.

New Tauri commands: claude_list_profiles, claude_list_skills, claude_read_skill,
pick_directory. New frontend adapter: claude-bridge.ts.
This commit is contained in:
Hibryda 2026-03-07 01:58:29 +01:00
parent 768db420d3
commit ff49e7e176
7 changed files with 507 additions and 18 deletions

View file

@ -41,6 +41,11 @@ interface QueryMessage {
maxBudgetUsd?: number;
resumeSessionId?: string;
permissionMode?: string;
settingSources?: string[];
systemPrompt?: string;
model?: string;
claudeConfigDir?: string;
additionalDirectories?: string[];
}
interface StopMessage {
@ -65,7 +70,7 @@ function handleMessage(msg: Record<string, unknown>) {
}
async function handleQuery(msg: QueryMessage) {
const { sessionId, prompt, cwd, maxTurns, maxBudgetUsd, resumeSessionId, permissionMode } = msg;
const { sessionId, prompt, cwd, maxTurns, maxBudgetUsd, resumeSessionId, permissionMode, settingSources, systemPrompt, model, claudeConfigDir, additionalDirectories } = msg;
if (sessions.has(sessionId)) {
send({ type: 'error', sessionId, message: 'Session already running' });
@ -83,6 +88,10 @@ async function handleQuery(msg: QueryMessage) {
cleanEnv[key] = value;
}
}
// Override CLAUDE_CONFIG_DIR for multi-account support
if (claudeConfigDir) {
cleanEnv['CLAUDE_CONFIG_DIR'] = claudeConfigDir;
}
try {
if (!claudePath) {
@ -106,6 +115,10 @@ async function handleQuery(msg: QueryMessage) {
],
permissionMode: (permissionMode ?? 'bypassPermissions') as 'bypassPermissions' | 'default',
allowDangerouslySkipPermissions: (permissionMode ?? 'bypassPermissions') === 'bypassPermissions',
settingSources: settingSources ?? ['user', 'project'],
systemPrompt: systemPrompt ?? undefined,
model: model ?? undefined,
additionalDirectories: additionalDirectories ?? undefined,
},
});