| package shared |
|
|
| import ( |
| "context" |
| "net/http" |
|
|
| "ds2api/internal/auth" |
| "ds2api/internal/chathistory" |
| "ds2api/internal/config" |
| dsclient "ds2api/internal/deepseek/client" |
| "ds2api/internal/util" |
| ) |
|
|
| const ( |
| |
| UploadMaxSize = 100 << 20 |
| |
| GeneralMaxSize = 100 << 20 |
| ) |
|
|
| type AuthResolver interface { |
| Determine(req *http.Request) (*auth.RequestAuth, error) |
| DetermineCaller(req *http.Request) (*auth.RequestAuth, error) |
| Release(a *auth.RequestAuth) |
| } |
|
|
| type DeepSeekCaller interface { |
| CreateSession(ctx context.Context, a *auth.RequestAuth, maxAttempts int) (string, error) |
| GetPow(ctx context.Context, a *auth.RequestAuth, maxAttempts int) (string, error) |
| UploadFile(ctx context.Context, a *auth.RequestAuth, req dsclient.UploadFileRequest, maxAttempts int) (*dsclient.UploadFileResult, error) |
| CallCompletion(ctx context.Context, a *auth.RequestAuth, payload map[string]any, powResp string, maxAttempts int) (*http.Response, error) |
| DeleteSessionForToken(ctx context.Context, token string, sessionID string) (*dsclient.DeleteSessionResult, error) |
| DeleteAllSessionsForToken(ctx context.Context, token string) error |
| } |
|
|
| type ConfigReader interface { |
| ModelAliases() map[string]string |
| ToolcallMode() string |
| ToolcallEarlyEmitConfidence() string |
| ResponsesStoreTTLSeconds() int |
| EmbeddingsProvider() string |
| AutoDeleteMode() string |
| AutoDeleteSessions() bool |
| CurrentInputFileEnabled() bool |
| CurrentInputFileMinChars() int |
| ThinkingInjectionEnabled() bool |
| ThinkingInjectionPrompt() string |
| } |
|
|
| type Deps struct { |
| Store ConfigReader |
| Auth AuthResolver |
| DS DeepSeekCaller |
| ChatHistory *chathistory.Store |
| } |
|
|
| var WriteJSON = util.WriteJSON |
|
|
| var _ AuthResolver = (*auth.Resolver)(nil) |
| var _ DeepSeekCaller = (*dsclient.Client)(nil) |
| var _ ConfigReader = (*config.Store)(nil) |
|
|