feat: Claude CLI Pfad mit ask_user_choice, Plan-Modus und Tool-Konfiguration
- ClaudeCliService: Marker-basierte ask_user_choice Erkennung im Stream-Parser - AnthropicService: StreamChatViaCli mit allowUserChoice, planMode, webSearch - BuildHistoryContext erweitert für tool_use/tool_result (Choice-Antworten) - Tool-Use Records werden in DB persistiert (Poll-Kompatibilität) - CLI Tools konfigurierbar: Workspace/Plan-Modus/WebSearch/kein Workspace - OAuth DB-Felder für zukünftige Token-Verwaltung Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
8150b58110
commit
4af9430466
7 files changed
+1039
-3
No files matched your search
@@ -237,12 +237,21 @@ public static class ChatEndpoint
|
||||
}
|
||||
else
|
||||
{
|
||||
// Standard: Anthropic – Key wird zwingend benötigt
|
||||
// Standard: Anthropic
|
||||
var anthropicToken = userApiKey?.ApiKey;
|
||||
|
||||
// Kein API-Key → Claude CLI als Fallback verwenden
|
||||
if (string.IsNullOrEmpty(anthropicToken))
|
||||
{
|
||||
await SseHelper.TryWriteSse(res, "error", new { error = "Kein API-Key für diesen Agent zugewiesen. Bitte weise einen Key zu." }, sseCt);
|
||||
await SseHelper.TryWriteSse(res, "done", new { chainId = ctx.ChainId }, sseCt);
|
||||
if (anthropic.IsCliAvailable)
|
||||
{
|
||||
await anthropic.StreamChatViaCli(res, ctx.ModelId, ctx.SystemPrompt, messages, ctx.ChainId, workspace: ctx.Workspace, allowUserChoice: ctx.Agent?.AllowUserChoice ?? true, planMode: body.PlanMode, webSearch: !string.IsNullOrEmpty(ctx.WebSearchVersion), sessionId: sessionId, cancellationToken: sseCt);
|
||||
}
|
||||
else
|
||||
{
|
||||
await SseHelper.TryWriteSse(res, "error", new { error = "Kein API-Key zugewiesen und Claude CLI nicht verfügbar. Bitte einen Key zuweisen oder 'claude login' ausführen." }, sseCt);
|
||||
await SseHelper.TryWriteSse(res, "done", new { chainId = ctx.ChainId }, sseCt);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user