Documentation
¶
Index ¶
- Constants
- func APIKeyMiddleware(apiKey string) gin.HandlerFunc
- func NewModelsHandler(r *gin.Engine, vendorManager *ai.VendorsManager)
- func NewStrategiesHandler(r *gin.Engine)
- func Serve(registry *core.PluginRegistry, address string, apiKey string) (err error)
- func ServeOllama(registry *core.PluginRegistry, address string, version string) (err error)
- type APIConvert
- type ChatHandler
- type ChatRequest
- type ConfigHandler
- type ContextsHandler
- type FabricResponseFormat
- type Model
- type ModelDetails
- type ModelsHandler
- type OllamaMessage
- type OllamaModel
- type OllamaRequestBody
- type OllamaResponse
- type PatternApplyRequest
- type PatternsHandler
- type PromptRequest
- type SessionsHandler
- type StorageHandler
- func (h *StorageHandler[T]) Delete(c *gin.Context)
- func (h *StorageHandler[T]) Exists(c *gin.Context)
- func (h *StorageHandler[T]) Get(c *gin.Context)
- func (h *StorageHandler[T]) GetNames(c *gin.Context)
- func (h *StorageHandler[T]) Rename(c *gin.Context)
- func (h *StorageHandler[T]) Save(c *gin.Context)
- type StrategyMeta
- type StreamResponse
- type YouTubeHandler
- type YouTubeRequest
- type YouTubeResponse
Constants ¶
const APIKeyHeader = "X-API-Key"
Variables ¶
This section is empty.
Functions ¶
func APIKeyMiddleware ¶
func APIKeyMiddleware(apiKey string) gin.HandlerFunc
APIKeyMiddleware validates API key for protected endpoints. Swagger documentation endpoints (/swagger/*) are exempt from authentication to allow users to browse and test the API documentation freely.
func NewModelsHandler ¶
func NewModelsHandler(r *gin.Engine, vendorManager *ai.VendorsManager)
func NewStrategiesHandler ¶
NewStrategiesHandler registers the /strategies GET endpoint
func Serve ¶
func Serve(registry *core.PluginRegistry, address string, apiKey string) (err error)
@title Fabric REST API @version 1.0 @description REST API for Fabric AI augmentation framework. Provides endpoints for chat completions, pattern management, contexts, sessions, and more. @contact.name Fabric Support @contact.url https://github.com/danielmiessler/fabric @license.name MIT @license.url https://opensource.org/licenses/MIT @host localhost:8080 @BasePath / @securityDefinitions.apikey ApiKeyAuth @in header @name X-API-Key
func ServeOllama ¶
func ServeOllama(registry *core.PluginRegistry, address string, version string) (err error)
Types ¶
type APIConvert ¶
type APIConvert struct {
// contains filtered or unexported fields
}
type ChatHandler ¶
type ChatHandler struct {
// contains filtered or unexported fields
}
func NewChatHandler ¶
func NewChatHandler(r *gin.Engine, registry *core.PluginRegistry, db *fsdb.Db) *ChatHandler
func (*ChatHandler) HandleChat ¶
func (h *ChatHandler) HandleChat(c *gin.Context)
HandleChat godoc @Summary Stream chat completions @Description Stream AI responses using Server-Sent Events (SSE) @Tags chat @Accept json @Produce text/event-stream @Param request body ChatRequest true "Chat request with prompts and options" @Success 200 {object} StreamResponse "Streaming response" @Failure 400 {object} map[string]string @Security ApiKeyAuth @Router /chat [post]
type ChatRequest ¶
type ChatRequest struct {
Prompts []PromptRequest `json:"prompts"`
Language string `json:"language"` // Add Language field to bind from request
domain.ChatOptions // Embed the ChatOptions from common package
}
type ConfigHandler ¶
type ConfigHandler struct {
// contains filtered or unexported fields
}
ConfigHandler defines the handler for configuration-related operations
func NewConfigHandler ¶
func NewConfigHandler(r *gin.Engine, db *fsdb.Db) *ConfigHandler
func (*ConfigHandler) GetConfig ¶
func (h *ConfigHandler) GetConfig(c *gin.Context)
func (*ConfigHandler) UpdateConfig ¶
func (h *ConfigHandler) UpdateConfig(c *gin.Context)
type ContextsHandler ¶
type ContextsHandler struct {
*StorageHandler[fsdb.Context]
// contains filtered or unexported fields
}
ContextsHandler defines the handler for contexts-related operations
func NewContextsHandler ¶
func NewContextsHandler(r *gin.Engine, contexts *fsdb.ContextsEntity) (ret *ContextsHandler)
NewContextsHandler creates a new ContextsHandler
type FabricResponseFormat ¶
type ModelDetails ¶
type ModelsHandler ¶
type ModelsHandler struct {
// contains filtered or unexported fields
}
func (*ModelsHandler) GetModelNames ¶
func (h *ModelsHandler) GetModelNames(c *gin.Context)
GetModelNames godoc @Summary List all available models @Description Get a list of all available AI models grouped by vendor @Tags models @Produce json @Success 200 {object} map[string]interface{} "Returns models (array) and vendors (map)" @Failure 500 {object} map[string]string @Security ApiKeyAuth @Router /models/names [get]
type OllamaMessage ¶
type OllamaModel ¶
type OllamaModel struct {
Models []Model `json:"models"`
}
type OllamaRequestBody ¶
type OllamaResponse ¶
type OllamaResponse struct {
Model string `json:"model"`
CreatedAt string `json:"created_at"`
Message struct {
Role string `json:"role"`
Content string `json:"content"`
} `json:"message"`
DoneReason string `json:"done_reason,omitempty"`
Done bool `json:"done"`
TotalDuration int64 `json:"total_duration,omitempty"`
LoadDuration int64 `json:"load_duration,omitempty"`
PromptEvalCount int64 `json:"prompt_eval_count,omitempty"`
PromptEvalDuration int64 `json:"prompt_eval_duration,omitempty"`
EvalCount int64 `json:"eval_count,omitempty"`
EvalDuration int64 `json:"eval_duration,omitempty"`
}
type PatternApplyRequest ¶
type PatternApplyRequest struct {
Input string `json:"input"`
Variables map[string]string `json:"variables,omitempty"`
}
PatternApplyRequest represents the request body for applying a pattern
type PatternsHandler ¶
type PatternsHandler struct {
*StorageHandler[fsdb.Pattern]
// contains filtered or unexported fields
}
PatternsHandler defines the handler for patterns-related operations
func NewPatternsHandler ¶
func NewPatternsHandler(r *gin.Engine, patterns *fsdb.PatternsEntity) (ret *PatternsHandler)
NewPatternsHandler creates a new PatternsHandler
func (*PatternsHandler) ApplyPattern ¶
func (h *PatternsHandler) ApplyPattern(c *gin.Context)
ApplyPattern handles the POST /patterns/:name/apply route @Summary Apply pattern with variables @Description Apply a pattern with variable substitution @Tags patterns @Accept json @Produce json @Param name path string true "Pattern name" @Param request body PatternApplyRequest true "Pattern application request" @Success 200 {object} fsdb.Pattern @Failure 400 {object} map[string]string @Failure 500 {object} map[string]string @Security ApiKeyAuth @Router /patterns/{name}/apply [post]
func (*PatternsHandler) Get ¶
func (h *PatternsHandler) Get(c *gin.Context)
Get handles the GET /patterns/:name route - returns raw pattern without variable processing @Summary Get a pattern @Description Retrieve a pattern by name @Tags patterns @Accept json @Produce json @Param name path string true "Pattern name" @Success 200 {object} fsdb.Pattern @Failure 500 {object} map[string]string @Security ApiKeyAuth @Router /patterns/{name} [get]
type PromptRequest ¶
type PromptRequest struct {
UserInput string `json:"userInput"`
Vendor string `json:"vendor"`
Model string `json:"model"`
ContextName string `json:"contextName"`
PatternName string `json:"patternName"`
StrategyName string `json:"strategyName"` // Optional strategy name
SessionName string `json:"sessionName"` // Session name for multi-turn conversations
Variables map[string]string `json:"variables,omitempty"` // Pattern variables
}
type SessionsHandler ¶
type SessionsHandler struct {
*StorageHandler[fsdb.Session]
// contains filtered or unexported fields
}
SessionsHandler defines the handler for sessions-related operations
func NewSessionsHandler ¶
func NewSessionsHandler(r *gin.Engine, sessions *fsdb.SessionsEntity) (ret *SessionsHandler)
NewSessionsHandler creates a new SessionsHandler
type StorageHandler ¶
type StorageHandler[T any] struct { // contains filtered or unexported fields }
StorageHandler defines the handler for storage-related operations
func NewStorageHandler ¶
func NewStorageHandler[T any](r *gin.Engine, entityType string, storage db.Storage[T]) (ret *StorageHandler[T])
NewStorageHandler creates a new StorageHandler
func (*StorageHandler[T]) Delete ¶
func (h *StorageHandler[T]) Delete(c *gin.Context)
Delete handles the DELETE /storage/:name route
func (*StorageHandler[T]) Exists ¶
func (h *StorageHandler[T]) Exists(c *gin.Context)
Exists handles the GET /storage/exists/:name route
func (*StorageHandler[T]) Get ¶
func (h *StorageHandler[T]) Get(c *gin.Context)
Get handles the GET /storage/:name route
func (*StorageHandler[T]) GetNames ¶
func (h *StorageHandler[T]) GetNames(c *gin.Context)
GetNames handles the GET /storage/names route
func (*StorageHandler[T]) Rename ¶
func (h *StorageHandler[T]) Rename(c *gin.Context)
Rename handles the PUT /storage/rename/:oldName/:newName route
func (*StorageHandler[T]) Save ¶
func (h *StorageHandler[T]) Save(c *gin.Context)
Save handles the POST /storage/save/:name route
type StrategyMeta ¶
type StrategyMeta struct {
Name string `json:"name"`
Description string `json:"description"`
Prompt string `json:"prompt"`
}
StrategyMeta represents the minimal info about a strategy
type StreamResponse ¶
type StreamResponse struct {
Type string `json:"type"` // "content", "usage", "error", "complete"
Format string `json:"format,omitempty"` // "markdown", "mermaid", "plain"
Content string `json:"content,omitempty"`
Usage *domain.UsageMetadata `json:"usage,omitempty"`
}
type YouTubeHandler ¶
type YouTubeHandler struct {
// contains filtered or unexported fields
}
func NewYouTubeHandler ¶
func NewYouTubeHandler(r *gin.Engine, registry *core.PluginRegistry) *YouTubeHandler
func (*YouTubeHandler) Transcript ¶
func (h *YouTubeHandler) Transcript(c *gin.Context)
Transcript godoc @Summary Get YouTube video transcript @Description Retrieves the transcript of a YouTube video along with video metadata (title and description) @Tags youtube @Accept json @Produce json @Param request body YouTubeRequest true "YouTube transcript request with URL, language, and timestamp options" @Success 200 {object} YouTubeResponse "Successful response with transcript and metadata" @Failure 400 {object} map[string]string "Bad request - invalid URL or playlist URL provided" @Failure 500 {object} map[string]string "Internal server error - failed to retrieve transcript or metadata" @Security ApiKeyAuth @Router /youtube/transcript [post]
type YouTubeRequest ¶
type YouTubeRequest struct {
URL string `json:"url" binding:"required" example:"https://www.youtube.com/watch?v=dQw4w9WgXcQ"` // YouTube video URL (required)
Language string `json:"language,omitempty" example:"en"` // Language code for transcript (default: "en")
Timestamps bool `json:"timestamps,omitempty" example:"false"` // Include timestamps in the transcript (default: false)
}
YouTubeRequest represents a request to get a YouTube video transcript
type YouTubeResponse ¶
type YouTubeResponse struct {
Transcript string `json:"transcript" example:"This is the video transcript..."` // The video transcript text
VideoId string `json:"videoId" example:"dQw4w9WgXcQ"` // YouTube video ID
Title string `json:"title" example:"Example Video Title"` // Video title from YouTube metadata
Description string `json:"description" example:"This is the video description from YouTube..."` // Video description from YouTube metadata
}
YouTubeResponse represents the response containing video transcript and metadata