first commit

This commit is contained in:
Beyhan Oğur
2026-04-26 21:52:23 +03:00
commit 880f412e2c
2662 changed files with 866266 additions and 0 deletions

253
core/schemas/files.go Normal file
View File

@@ -0,0 +1,253 @@
// Package schemas defines the core schemas and types used by the Bifrost system.
package schemas
// FilePurpose represents the purpose of an uploaded file.
type FilePurpose string
const (
FilePurposeBatch FilePurpose = "batch"
FilePurposeAssistants FilePurpose = "assistants"
FilePurposeFineTune FilePurpose = "fine-tune"
FilePurposeVision FilePurpose = "vision"
FilePurposeBatchOutput FilePurpose = "batch_output"
FilePurposeUserData FilePurpose = "user_data"
FilePurposeResponses FilePurpose = "responses"
FilePurposeEvals FilePurpose = "evals"
)
// FileStatus represents the status of a file.
type FileStatus string
const (
FileStatusUploaded FileStatus = "uploaded"
FileStatusProcessed FileStatus = "processed"
FileStatusProcessing FileStatus = "processing"
FileStatusError FileStatus = "error"
FileStatusDeleted FileStatus = "deleted"
)
// FileStorageBackend represents the storage backend type.
type FileStorageBackend string
const (
FileStorageAPI FileStorageBackend = "api" // OpenAI/Azure REST API
FileStorageS3 FileStorageBackend = "s3" // AWS S3
FileStorageGCS FileStorageBackend = "gcs" // Google Cloud Storage
FileStorageMemory FileStorageBackend = "memory" // In-memory (for Anthropic virtual files)
)
// FileObject represents a file object returned by the API.
type FileObject struct {
ID string `json:"id"`
Object string `json:"object,omitempty"` // "file"
Bytes int64 `json:"bytes"`
CreatedAt int64 `json:"created_at"`
UpdatedAt int64 `json:"updated_at,omitempty"`
Filename string `json:"filename"`
Purpose FilePurpose `json:"purpose"`
Status FileStatus `json:"status,omitempty"`
StatusDetails *string `json:"status_details,omitempty"`
ExpiresAt *int64 `json:"expires_at,omitempty"`
}
// BifrostFileUploadRequest represents a request to upload a file.
type BifrostFileUploadRequest struct {
Provider ModelProvider `json:"provider"`
Model *string `json:"model"`
// File content
File []byte `json:"-"` // Raw file content (not serialized)
Filename string `json:"filename"` // Original filename
Purpose FilePurpose `json:"purpose"` // Purpose of the file (e.g., "batch")
ContentType *string `json:"content_type,omitempty"` // MIME type of the file
// Storage configuration (for S3/GCS backends)
StorageConfig *FileStorageConfig `json:"storage_config,omitempty"`
// Expiration configuration (OpenAI only)
ExpiresAfter *FileExpiresAfter `json:"expires_after,omitempty"`
// Extra parameters for provider-specific features
ExtraParams map[string]interface{} `json:"-"`
}
// S3StorageConfig represents AWS S3 storage configuration.
type S3StorageConfig struct {
Bucket string `json:"bucket,omitempty"`
Region string `json:"region,omitempty"`
Prefix string `json:"prefix,omitempty"`
}
// GCSStorageConfig represents Google Cloud Storage configuration.
type GCSStorageConfig struct {
Bucket string `json:"bucket,omitempty"`
Project string `json:"project,omitempty"`
Prefix string `json:"prefix,omitempty"`
}
// FileExpiresAfter represents an expiration configuration for uploaded files.
type FileExpiresAfter struct {
Anchor string `json:"anchor"` // e.g., "created_at"
Seconds int `json:"seconds"` // 3600-2592000 (1 hour to 30 days)
}
// FileStorageConfig represents storage configuration for cloud storage backends.
type FileStorageConfig struct {
S3 *S3StorageConfig `json:"s3,omitempty"`
GCS *GCSStorageConfig `json:"gcs,omitempty"`
}
// BifrostFileUploadResponse represents the response from uploading a file.
type BifrostFileUploadResponse struct {
ID string `json:"id"`
Object string `json:"object,omitempty"` // "file"
Bytes int64 `json:"bytes"`
CreatedAt int64 `json:"created_at"`
Filename string `json:"filename"`
Purpose FilePurpose `json:"purpose"`
Status FileStatus `json:"status,omitempty"`
StatusDetails *string `json:"status_details,omitempty"`
ExpiresAt *int64 `json:"expires_at,omitempty"`
// Storage backend info
StorageBackend FileStorageBackend `json:"storage_backend,omitempty"`
StorageURI string `json:"storage_uri,omitempty"` // S3/GCS URI if applicable
ExtraFields BifrostResponseExtraFields `json:"extra_fields"`
}
// BifrostFileListRequest represents a request to list files.
type BifrostFileListRequest struct {
Provider ModelProvider `json:"provider"`
Model *string `json:"model"`
RawRequestBody []byte `json:"-"` // Raw request body (not serialized)
// Filters
Purpose FilePurpose `json:"purpose,omitempty"` // Filter by purpose
// Pagination
Limit int `json:"limit,omitempty"` // Max results to return
After *string `json:"after,omitempty"` // Cursor for pagination
Order *string `json:"order,omitempty"` // Sort order (asc/desc)
// Storage configuration (for S3/GCS backends)
StorageConfig *FileStorageConfig `json:"storage_config,omitempty"`
// Extra parameters for provider-specific features
ExtraParams map[string]interface{} `json:"-"`
}
// GetRawRequestBody returns the raw request body.
func (request *BifrostFileListRequest) GetRawRequestBody() []byte {
return request.RawRequestBody
}
// BifrostFileListResponse represents the response from listing files.
type BifrostFileListResponse struct {
Object string `json:"object,omitempty"` // "list"
Data []FileObject `json:"data"`
HasMore bool `json:"has_more,omitempty"`
After *string `json:"after,omitempty"` // Continuation token for pagination
ExtraFields BifrostResponseExtraFields `json:"extra_fields"`
}
// BifrostFileRetrieveRequest represents a request to retrieve file metadata.
type BifrostFileRetrieveRequest struct {
Provider ModelProvider `json:"provider"`
Model *string `json:"model"`
RawRequestBody []byte `json:"-"` // Raw request body (not serialized)
FileID string `json:"file_id"` // ID of the file to retrieve
// Storage configuration (for S3/GCS backends)
StorageConfig *FileStorageConfig `json:"storage_config,omitempty"`
// Extra parameters for provider-specific features
ExtraParams map[string]interface{} `json:"-"`
}
// GetRawRequestBody returns the raw request body.
func (request *BifrostFileRetrieveRequest) GetRawRequestBody() []byte {
return request.RawRequestBody
}
// BifrostFileRetrieveResponse represents the response from retrieving file metadata.
type BifrostFileRetrieveResponse struct {
ID string `json:"id"`
Object string `json:"object,omitempty"` // "file"
Bytes int64 `json:"bytes"`
CreatedAt int64 `json:"created_at"`
UpdatedAt int64 `json:"updated_at,omitempty"`
Filename string `json:"filename"`
Purpose FilePurpose `json:"purpose"`
Status FileStatus `json:"status,omitempty"`
StatusDetails *string `json:"status_details,omitempty"`
ExpiresAt *int64 `json:"expires_at,omitempty"`
// Storage backend info
StorageBackend FileStorageBackend `json:"storage_backend,omitempty"`
StorageURI string `json:"storage_uri,omitempty"`
ExtraFields BifrostResponseExtraFields `json:"extra_fields"`
}
// BifrostFileDeleteRequest represents a request to delete a file.
type BifrostFileDeleteRequest struct {
Provider ModelProvider `json:"provider"`
Model *string `json:"model"`
FileID string `json:"file_id"` // ID of the file to delete
RawRequestBody []byte `json:"-"` // Raw request body (not serialized)
// Storage configuration (for S3/GCS backends)
StorageConfig *FileStorageConfig `json:"storage_config,omitempty"`
// Extra parameters for provider-specific features
ExtraParams map[string]interface{} `json:"-"`
}
// GetRawRequestBody returns the raw request body.
func (request *BifrostFileDeleteRequest) GetRawRequestBody() []byte {
return request.RawRequestBody
}
// BifrostFileDeleteResponse represents the response from deleting a file.
type BifrostFileDeleteResponse struct {
ID string `json:"id"`
Object string `json:"object,omitempty"` // "file"
Deleted bool `json:"deleted"`
ExtraFields BifrostResponseExtraFields `json:"extra_fields"`
}
// BifrostFileContentRequest represents a request to download file content.
type BifrostFileContentRequest struct {
Provider ModelProvider `json:"provider"`
Model *string `json:"model"`
FileID string `json:"file_id"` // ID of the file to download
RawRequestBody []byte `json:"-"` // Raw request body (not serialized)
// Storage configuration (for S3/GCS backends)
StorageConfig *FileStorageConfig `json:"storage_config,omitempty"`
// Extra parameters for provider-specific features
ExtraParams map[string]interface{} `json:"-"`
}
// GetRawRequestBody returns the raw request body.
func (request *BifrostFileContentRequest) GetRawRequestBody() []byte {
return request.RawRequestBody
}
// BifrostFileContentResponse represents the response from downloading file content.
type BifrostFileContentResponse struct {
FileID string `json:"file_id"`
Content []byte `json:"-"` // Raw file content (not serialized)
ContentType string `json:"content_type,omitempty"` // MIME type
ExtraFields BifrostResponseExtraFields `json:"extra_fields"`
}