Files
agent-radar 2ed3415fb7
Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
2026-09-01 20:17:27 +08:00

174 lines
6.8 KiB
Go

package providerregistry
import canonical "github.com/tutti-os/tutti/packages/agent/store-sqlite/canonical"
const (
ClaudeCodeProviderID = canonical.ClaudeCodeProviderID
ClaudeCodeTargetID = "local:claude-code"
)
func claudeCodeDescriptor() ProviderDescriptor {
return ProviderDescriptor{
Identity: canonicalProviderIdentity(ClaudeCodeProviderID),
Runtime: RuntimeDescriptor{
Kind: RuntimeKindClaudeSDK,
Name: "claude-agent-sdk",
NativeSessionFork: true,
Endpoint: RuntimeEndpointDescriptor{
BaseURLEnvVars: []string{
"ANTHROPIC_BASE_URL",
"ANTHROPIC_API_BASE_URL",
},
ConfigKind: EndpointConfigKindClaudeSettings,
ModelPlanProtocol: ModelPlanProtocolAnthropic,
NativeSubscription: true,
},
},
Status: StatusDescriptor{
Kind: StatusKindClaudeCLI,
AuthOutputParserKind: AuthOutputParserKindClaude,
AuthMarkerParserKind: AuthMarkerParserKindClaude,
AuthCommandRunnerKind: AuthCommandRunnerKindClaudeGate,
StaticSpecResolverKind: StaticSpecResolverKindGeneric,
BinaryNames: []string{"claude"},
AuthStatusCommand: []string{"auth", "status"},
AuthStatusCommandTimeoutSeconds: 600,
RemoteAuthProbe: RemoteAuthProbeDescriptor{
Kind: RemoteAuthProbeKindHTTPBearer,
CredentialKind: RemoteAuthCredentialKindClaudeOAuth,
Endpoint: "https://api.anthropic.com/api/oauth/usage",
Method: "GET",
Headers: map[string]string{
"Accept": "application/json",
"anthropic-beta": "oauth-2025-04-20",
"User-Agent": "claude-code/2.1.0",
},
TimeoutSeconds: 10,
},
AuthMarkerPaths: []string{"~/.claude.json", "~/.claude/auth.json"},
APIEndpoints: []string{"https://api.anthropic.com/v1/messages"},
CustomConfigEnvVars: []string{
"ANTHROPIC_API_KEY",
"ANTHROPIC_AUTH_TOKEN",
"ANTHROPIC_BASE_URL",
"ANTHROPIC_API_BASE_URL",
},
CredentialEnvVars: []string{"ANTHROPIC_API_KEY", "ANTHROPIC_AUTH_TOKEN"},
Install: InstallerDescriptor{
Kind: InstallerKindOfficialScript,
DisplayCommand: "curl -fsSL https://claude.ai/install.sh | bash",
ScriptURL: "https://claude.ai/install.sh",
ScriptShell: "bash",
WindowsFallback: InstallerWindowsFallbackManagedRuntime,
FailureReasonMarkers: map[string][]string{
"install_unavailable_in_region": {"app-unavailable-in-region", "app unavailable in region", "claude isn't available here", "claude isn't available here", "claude isn't available here"},
},
},
Update: UpdateDescriptor{
Capability: UpdateCapabilityUnsupported,
UnsupportedReason: UpdateUnsupportedReasonOfficialScript,
},
LoginArgs: []string{"auth", "login"},
AuthWatch: AuthWatchDescriptor{
Sources: []AuthWatchSourceDescriptor{
{
RootCandidates: []AuthWatchRootCandidateDescriptor{{EnvVar: "CLAUDE_CONFIG_DIR"}},
DefaultRoot: "~/.claude",
Paths: []string{"settings.json", "auth.json", ".credentials.json"},
},
{DefaultRoot: "~", Paths: []string{".claude.json"}},
},
ContentFingerprint: AuthWatchContentFingerprintClaudeState,
},
},
ComposerProfile: ComposerProfileDescriptor{
ModelSelection: true,
LiveModelDiscovery: LiveModelDiscoveryDescriptor{
Kind: LiveModelDiscoveryKindClaudeSDK,
HiddenProbe: true,
AccountScoped: true,
},
ReasoningEffort: true,
ReasoningEffortValues: []string{"low", "medium", "high", "xhigh"},
ReasoningEffortOptions: ReasoningEffortOptionsStatic,
DefaultReasoningEffort: "high",
Speed: true,
SpeedValues: []string{"standard", "fast"},
DefaultSpeed: "standard",
Capabilities: []string{
"imageInput",
"skills",
"compact",
"tokenUsage",
"rateLimits",
"planMode",
CapabilityInterrupt,
CapabilityActiveTurnGuidance,
CapabilityModelSwitch,
CapabilityModelPlanBinding,
"permissionModeChangeDuringTurn",
},
PermissionConfigurable: true,
DefaultPermissionModeID: "default",
PermissionModes: []PermissionModeDescriptor{
{ID: "default", Semantic: "ask-before-write"},
{ID: "acceptEdits", Semantic: "accept-edits"},
{ID: "dontAsk", Semantic: "locked-down"},
{ID: "bypassPermissions", Semantic: "full-access"},
},
ConfigOptionIDs: ComposerConfigOptionIDs{
Model: "model",
Reasoning: "effort",
Speed: "fast",
Permission: "permission_mode",
},
Skills: SkillDescriptor{
Kind: SkillKindClaudeCode,
Invocation: SkillInvocationTextTrigger,
},
SlashCommandPolicy: SlashCommandPolicyDescriptor{
FallbackCommands: []string{"compact", "status", "fast", "goal", "review"},
CommandCatalogAuthoritative: true,
CommandEffects: []SlashCommandEffectDescriptor{
{Command: "compact", Effect: SlashCommandEffectSubmitImmediate},
{Command: "context", Effect: SlashCommandEffectSubmitImmediate},
{Command: "usage", Effect: SlashCommandEffectSubmitImmediate},
{Command: "review", Effect: SlashCommandEffectShowReviewPicker},
{Command: "goal", Effect: SlashCommandEffectActivateGoalMode},
{Command: "plan", Effect: SlashCommandEffectTogglePlanMode},
{Command: "status", Effect: SlashCommandEffectShowStatus},
{Command: "fast", Effect: SlashCommandEffectToggleSpeed},
},
},
Behavior: ComposerBehaviorDescriptor{
ModelOptionsAuthoritative: true,
RefreshModelOptionsAfterSettings: true,
PrewarmDraftSession: true,
PlanModeExclusiveWithPermissionMode: true,
},
},
Target: TargetDescriptor{
ID: ClaudeCodeTargetID,
LaunchRefType: TargetLaunchRefTypeLocalCLI,
Enabled: true,
SortOrder: 20,
},
Events: EventsDescriptor{
Enabled: true,
Aliases: []string{"claude", "claude_code"},
TurnLifecycleProjection: TurnLifecycleProjectionExplicit,
},
Sidecar: SidecarDescriptor{MentionRouting: SidecarMentionRoutingClaudeNamespaced, ExecutionEnvironment: SidecarExecutionEnvironmentClaudeIPC},
Desktop: DesktopIntegrationDescriptor{Managed: true, ManagedOrder: 1, StatusProbePriority: 2, UsageProbeKind: DesktopUsageProbeClaudeCode, AuthProbeAfterCredentialSync: true, DeveloperLogs: true, DefaultProviderEligible: true, DefaultProviderPriority: 3},
ExternalImport: ExternalImportDescriptor{
Enabled: true,
RootEnvVar: "CLAUDE_CONFIG_DIR",
DefaultRoot: "~/.claude",
ScanDirectories: []string{"projects"},
SkipDirectoryPrefixes: []string{"agent-"},
ParserKind: ExternalImportParserKindClaudeJSONL,
UserTextCleanerKind: ExternalImportUserTextCleanerKindClaude,
},
}
}