feat: add claudecode with oauth to AI providers

This commit is contained in:
2026-04-21 16:27:58 +02:00
parent 985768f400
commit f2bb88f040
12 changed files with 267 additions and 32 deletions

View File

@ -0,0 +1,52 @@
package ai
import (
"bytes"
"context"
"fmt"
"os/exec"
"strings"
)
type claudeCodeProvider struct {
model string
}
func newClaudeCode(model string) *claudeCodeProvider {
if model == "" {
model = "claude-sonnet-4-6"
}
return &claudeCodeProvider{model: model}
}
func (p *claudeCodeProvider) Name() string { return "claudecode" }
func (p *claudeCodeProvider) Summarize(ctx context.Context, prompt string, _ GenOptions) (string, error) {
var stdout, stderr bytes.Buffer
cmd := exec.CommandContext(ctx, "claude", "-p", prompt, "--model", p.model)
cmd.Stdout = &stdout
cmd.Stderr = &stderr
err := cmd.Run()
fmt.Printf("[claudecode] stdout len=%d stderr=%q err=%v\n", stdout.Len(), stderr.String(), err)
if err != nil {
msg := strings.TrimSpace(stderr.String())
if msg == "" {
msg = strings.TrimSpace(stdout.String())
}
if msg == "" {
msg = err.Error()
}
return "", fmt.Errorf("claude cli: %s", msg)
}
return strings.TrimSpace(stdout.String()), nil
}
func (p *claudeCodeProvider) ListModels(_ context.Context) ([]string, error) {
return []string{
"claude-opus-4-7",
"claude-sonnet-4-6",
"claude-haiku-4-5-20251001",
}, nil
}