plugin_entities

package
v0.0.0-...-da9b7ae Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 14, 2026 License: Apache-2.0 Imports: 27 Imported by: 0

Documentation

Index

Constants

View Source
const (
	SECRET_INPUT   = "secret-input"
	TEXT_INPUT     = "text-input"
	SELECT         = "select"
	STRING         = "string"
	NUMBER         = "number"
	FILE           = "file"
	FILES          = "files"
	BOOLEAN        = "boolean"
	APP_SELECTOR   = "app-selector"
	MODEL_SELECTOR = "model-selector"
	// TOOL_SELECTOR  = "tool-selector"
	TOOLS_SELECTOR = "array[tools]"
	ANY            = "any"
	// DynamicSelect
	DYNAMIC_SELECT = "dynamic-select"
	ARRAY          = "array"
	OBJECT         = "object"
	CHECKBOX       = "checkbox"
)
View Source
const (
	PLUGIN_RUNTIME_STATUS_ACTIVE     = "active"
	PLUGIN_RUNTIME_STATUS_LAUNCHING  = "launching"
	PLUGIN_RUNTIME_STATUS_STOPPED    = "stopped"
	PLUGIN_RUNTIME_STATUS_RESTARTING = "restarting"
	PLUGIN_RUNTIME_STATUS_PENDING    = "pending"
)

Variables

View Source
var (
	PluginNameRegex = regexp.MustCompile(`^[a-z0-9_-]{1,128}$`)
	AuthorRegex     = regexp.MustCompile(`^[a-z0-9_-]{1,64}$`)
)
View Source
var PARAMETER_RULE_TEMPLATE = map[DefaultParameterName]ModelParameterRule{
	TEMPERATURE: {
		Label: &I18nObject{
			EnUS:   "Temperature",
			ZhHans: "温度",
			JaJp:   "温度",
			PtBr:   "Temperatura",
		},
		Type: parser.ToPtr(PARAMETER_TYPE_FLOAT),
		Help: &I18nObject{
			EnUS:   "Controls randomness. Lower temperature results in less random completions. As the temperature approaches zero, the model will become deterministic and repetitive. Higher temperature results in more random completions.",
			ZhHans: "温度控制随机性。较低的温度会导致较少的随机完成。随着温度接近零,模型将变得确定性和重复性。较高的温度会导致更多的随机完成。",
			JaJp:   "温度はランダム性を制御します。温度が低いほどランダムな完成が少なくなります。温度がゼロに近づくと、モデルは決定論的で繰り返しになります。温度が高いほどランダムな完成が多くなります。",
			PtBr:   "A temperatura controla a aleatoriedade. Menores temperaturas resultam em menos conclusões aleatórias. À medida que a temperatura se aproxima de zero, o modelo se tornará determinístico e repetitivo. Temperaturas mais altas resultam em mais conclusões aleatórias.",
		},
		Required:  false,
		Default:   parser.ToPtr(any(0.0)),
		Min:       parser.ToPtr(0.0),
		Max:       parser.ToPtr(1.0),
		Precision: parser.ToPtr(2),
	},
	TOP_P: {
		Label: &I18nObject{
			EnUS:   "Top P",
			ZhHans: "Top P",
			JaJp:   "Top P",
			PtBr:   "Top P",
		},
		Type: parser.ToPtr(PARAMETER_TYPE_FLOAT),
		Help: &I18nObject{
			EnUS:   "Controls diversity via nucleus sampling: 0.5 means half of all likelihood-weighted options are considered.",
			ZhHans: "通过核心采样控制多样性:0.5表示考虑了一半的所有可能性加权选项。",
			JaJp:   "核サンプリングを通じて多様性を制御します:0.5は、すべての可能性加权オプションの半分を考慮します。",
			PtBr:   "Controla a diversidade via amostragem de núcleo: 0.5 significa que metade das opções com maior probabilidade são consideradas.",
		},
		Required:  false,
		Default:   parser.ToPtr(any(1.0)),
		Min:       parser.ToPtr(0.0),
		Max:       parser.ToPtr(1.0),
		Precision: parser.ToPtr(2),
	},
	TOP_K: {
		Label: &I18nObject{
			EnUS:   "Top K",
			ZhHans: "Top K",
		},
		Type: parser.ToPtr(PARAMETER_TYPE_INT),
		Help: &I18nObject{
			EnUS:   "Limits the number of tokens to consider for each step by keeping only the k most likely tokens.",
			ZhHans: "通过只保留每一步中最可能的 k 个标记来限制要考虑的标记数量。",
		},
		Required:  false,
		Default:   parser.ToPtr(any(50)),
		Min:       parser.ToPtr(1.0),
		Max:       parser.ToPtr(100.0),
		Precision: parser.ToPtr(0),
	},
	PRESENCE_PENALTY: {
		Label: &I18nObject{
			EnUS:   "Presence Penalty",
			ZhHans: "存在惩罚",
			JaJp:   "存在ペナルティ",
			PtBr:   "Penalidade de presença",
		},
		Type: parser.ToPtr(PARAMETER_TYPE_FLOAT),
		Help: &I18nObject{
			EnUS:   "Applies a penalty to the log-probability of tokens already in the text.",
			ZhHans: "对文本中已有的标记的对数概率施加惩罚。",
			JaJp:   "テキストに既に存在するトークンの対数確率にペナルティを適用します。",
			PtBr:   "Aplica uma penalidade à probabilidade logarítmica de tokens já presentes no texto.",
		},
		Required:  false,
		Default:   parser.ToPtr(any(0.0)),
		Min:       parser.ToPtr(0.0),
		Max:       parser.ToPtr(1.0),
		Precision: parser.ToPtr(2),
	},
	FREQUENCY_PENALTY: {
		Label: &I18nObject{
			EnUS:   "Frequency Penalty",
			ZhHans: "频率惩罚",
			JaJp:   "頻度ペナルティ",
			PtBr:   "Penalidade de frequência",
		},
		Type: parser.ToPtr(PARAMETER_TYPE_FLOAT),
		Help: &I18nObject{
			EnUS:   "Applies a penalty to the log-probability of tokens that appear in the text.",
			ZhHans: "对文本中出现的标记的对数概率施加惩罚。",
			JaJp:   "テキストに出現するトークンの対数確率にペナルティを適用します。",
			PtBr:   "Aplica uma penalidade à probabilidade logarítmica de tokens que aparecem no texto.",
		},
		Required:  false,
		Default:   parser.ToPtr(any(0.0)),
		Min:       parser.ToPtr(0.0),
		Max:       parser.ToPtr(1.0),
		Precision: parser.ToPtr(2),
	},
	MAX_TOKENS: {
		Label: &I18nObject{
			EnUS:   "Max Tokens",
			ZhHans: "最大标记",
			JaJp:   "最大トークン",
			PtBr:   "Máximo de tokens",
		},
		Type: parser.ToPtr(PARAMETER_TYPE_INT),
		Help: &I18nObject{
			EnUS:   "Specifies the upper limit on the length of generated results. If the generated results are truncated, you can increase this parameter.",
			ZhHans: "指定生成结果长度的上限。如果生成结果截断,可以调大该参数。",
			JaJp:   "生成結果の長さの上限を指定します。生成結果が切り捨てられた場合は、このパラメータを大きくすることができます。",
			PtBr:   "Especifica o limite superior para o comprimento dos resultados gerados. Se os resultados gerados forem truncados, você pode aumentar este parâmetro.",
		},
		Required:  false,
		Default:   parser.ToPtr(any(64)),
		Min:       parser.ToPtr(1.0),
		Max:       parser.ToPtr(2048.0),
		Precision: parser.ToPtr(0),
	},
	RESPONSE_FORMAT: {
		Label: &I18nObject{
			EnUS:   "Response Format",
			ZhHans: "回复格式",
			JaJp:   "応答形式",
			PtBr:   "Formato de resposta",
		},
		Type: parser.ToPtr(PARAMETER_TYPE_STRING),
		Help: &I18nObject{
			EnUS:   "Set a response format, ensure the output from llm is a valid code block as possible, such as JSON, XML, etc.",
			ZhHans: "设置一个返回格式,确保llm的输出尽可能是有效的代码块,如JSON、XML等",
			JaJp:   "応答形式を設定します。llmの出力が可能な限り有効なコードブロックであることを確認します。",
			PtBr:   "Defina um formato de resposta para garantir que a saída do llm seja um bloco de código válido o mais possível, como JSON, XML, etc.",
		},
		Required: false,
		Options:  []string{"JSON", "XML"},
	},
	JSON_SCHEMA: {
		Label: &I18nObject{
			EnUS: "JSON Schema",
		},
		Type: parser.ToPtr(PARAMETER_TYPE_STRING),
		Help: &I18nObject{
			EnUS:   "Set a response json schema will ensure LLM to adhere it.",
			ZhHans: "设置返回的json schema,llm将按照它返回",
		},
		Required: false,
	},
}

Functions

func HashedIdentity

func HashedIdentity(identity string) string

func ParsePluginUniversalEvent

func ParsePluginUniversalEvent(
	data []byte,
	statusText string,
	sessionHandler func(sessionId string, data []byte),
	heartbeatHandler func(),
	errorHandler func(err string),
	logHandler func(logEvent PluginLogEvent),
)

ParsePluginUniversalEvent parses bytes into struct contains basic info of a message it's the outermost layer of the protocol error_handler will be called when data is not standard or itself it's an error message

func ValidateProviderConfigs

func ValidateProviderConfigs(settings map[string]any, configs []ProviderConfig) error

ValidateProviderConfigs validates the provider configs

Types

type AgentStrategyDeclaration

type AgentStrategyDeclaration struct {
	Identity     AgentStrategyIdentity     `json:"identity" yaml:"identity" validate:"required"`
	Description  I18nObject                `json:"description" yaml:"description" validate:"required"`
	Parameters   []AgentStrategyParameter  `json:"parameters" yaml:"parameters" validate:"omitempty,dive"`
	OutputSchema AgentStrategyOutputSchema `json:"output_schema" yaml:"output_schema" validate:"omitempty"`
	Features     []string                  `json:"features" yaml:"features" validate:"omitempty,dive,lt=256"`
}

type AgentStrategyIdentity

type AgentStrategyIdentity struct {
	ToolIdentity `json:",inline" yaml:",inline"`
}

type AgentStrategyOutputSchema

type AgentStrategyOutputSchema map[string]any

type AgentStrategyParameter

type AgentStrategyParameter struct {
	Name         string                     `json:"name" yaml:"name" validate:"required,gt=0,lt=1024"`
	Label        I18nObject                 `json:"label" yaml:"label" validate:"required"`
	Help         I18nObject                 `json:"help" yaml:"help" validate:"omitempty"`
	Type         AgentStrategyParameterType `json:"type" yaml:"type" validate:"required,agent_strategy_parameter_type"`
	AutoGenerate *ParameterAutoGenerate     `json:"auto_generate" yaml:"auto_generate" validate:"omitempty"`
	Template     *ParameterTemplate         `json:"template" yaml:"template" validate:"omitempty"`
	Scope        *string                    `json:"scope" yaml:"scope" validate:"omitempty,max=1024,is_scope"`
	Required     bool                       `json:"required" yaml:"required"`
	Default      any                        `json:"default" yaml:"default" validate:"omitempty,is_basic_type"`
	Min          *float64                   `json:"min" yaml:"min" validate:"omitempty"`
	Max          *float64                   `json:"max" yaml:"max" validate:"omitempty"`
	Precision    *int                       `json:"precision" yaml:"precision" validate:"omitempty"`
	Options      []ParameterOption          `json:"options" yaml:"options" validate:"omitempty,dive"`
}

type AgentStrategyParameterType

type AgentStrategyParameterType string
const (
	AGENT_STRATEGY_PARAMETER_TYPE_STRING         AgentStrategyParameterType = STRING
	AGENT_STRATEGY_PARAMETER_TYPE_NUMBER         AgentStrategyParameterType = NUMBER
	AGENT_STRATEGY_PARAMETER_TYPE_BOOLEAN        AgentStrategyParameterType = BOOLEAN
	AGENT_STRATEGY_PARAMETER_TYPE_SELECT         AgentStrategyParameterType = SELECT
	AGENT_STRATEGY_PARAMETER_TYPE_SECRET_INPUT   AgentStrategyParameterType = SECRET_INPUT
	AGENT_STRATEGY_PARAMETER_TYPE_FILE           AgentStrategyParameterType = FILE
	AGENT_STRATEGY_PARAMETER_TYPE_FILES          AgentStrategyParameterType = FILES
	AGENT_STRATEGY_PARAMETER_TYPE_APP_SELECTOR   AgentStrategyParameterType = APP_SELECTOR
	AGENT_STRATEGY_PARAMETER_TYPE_MODEL_SELECTOR AgentStrategyParameterType = MODEL_SELECTOR
	AGENT_STRATEGY_PARAMETER_TYPE_TOOLS_SELECTOR AgentStrategyParameterType = TOOLS_SELECTOR
	AGENT_STRATEGY_PARAMETER_TYPE_ANY            AgentStrategyParameterType = ANY
)

type AgentStrategyProviderDeclaration

type AgentStrategyProviderDeclaration struct {
	Identity      AgentStrategyProviderIdentity `json:"identity" yaml:"identity" validate:"required"`
	Strategies    []AgentStrategyDeclaration    `json:"strategies" yaml:"strategies" validate:"required,dive"`
	StrategyFiles []string                      `json:"-" yaml:"-"`
}

func (*AgentStrategyProviderDeclaration) MarshalJSON

func (a *AgentStrategyProviderDeclaration) MarshalJSON() ([]byte, error)

func (*AgentStrategyProviderDeclaration) UnmarshalJSON

func (a *AgentStrategyProviderDeclaration) UnmarshalJSON(data []byte) error

func (*AgentStrategyProviderDeclaration) UnmarshalYAML

func (a *AgentStrategyProviderDeclaration) UnmarshalYAML(value *yaml.Node) error

type AgentStrategyProviderIdentity

type AgentStrategyProviderIdentity struct {
	ToolProviderIdentity `json:",inline" yaml:",inline"`
}

type AnyScope

type AnyScope string
const (
	ANY_SCOPE_STRING       AnyScope = "string"
	ANY_SCOPE_NUMBER       AnyScope = "number"
	ANY_SCOPE_OBJECT       AnyScope = "object"
	ANY_SCOPE_ARRAY_NUMBER AnyScope = "array[number]"
	ANY_SCOPE_ARRAY_STRING AnyScope = "array[string]"
	ANY_SCOPE_ARRAY_OBJECT AnyScope = "array[object]"
	ANY_SCOPE_ARRAY_FILES  AnyScope = "array[file]"
)

type AppSelectorScope

type AppSelectorScope string
const (
	APP_SELECTOR_SCOPE_ALL        AppSelectorScope = "all"
	APP_SELECTOR_SCOPE_CHAT       AppSelectorScope = "chat"
	APP_SELECTOR_SCOPE_WORKFLOW   AppSelectorScope = "workflow"
	APP_SELECTOR_SCOPE_COMPLETION AppSelectorScope = "completion"
)

type BasePluginIdentifier

type BasePluginIdentifier struct {
	PluginID string `json:"plugin_id"`
}

type ConfigOption

type ConfigOption struct {
	Value string     `json:"value" validate:"required,lt=128"`
	Label I18nObject `json:"label" validate:"required"`
}

type ConfigType

type ConfigType string
const (
	CONFIG_TYPE_SECRET_INPUT   ConfigType = SECRET_INPUT
	CONFIG_TYPE_TEXT_INPUT     ConfigType = TEXT_INPUT
	CONFIG_TYPE_SELECT         ConfigType = SELECT
	CONFIG_TYPE_BOOLEAN        ConfigType = BOOLEAN
	CONFIG_TYPE_MODEL_SELECTOR ConfigType = MODEL_SELECTOR
	CONFIG_TYPE_APP_SELECTOR   ConfigType = APP_SELECTOR
	// CONFIG_TYPE_TOOL_SELECTOR  ConfigType = TOOL_SELECTOR
	CONFIG_TYPE_TOOLS_SELECTOR ConfigType = TOOLS_SELECTOR
	CONFIG_TYPE_ANY            ConfigType = ANY
)

type DatasourceDeclaration

type DatasourceDeclaration struct {
	Identity     DatasourceIdentity     `json:"identity" yaml:"identity" validate:"required"`
	Parameters   []DatasourceParameter  `json:"parameters" yaml:"parameters" validate:"required,dive"`
	Description  I18nObject             `json:"description" yaml:"description" validate:"required"`
	OutputSchema DatasourceOutputSchema `json:"output_schema,omitempty" yaml:"output_schema,omitempty"`
}

type DatasourceIdentity

type DatasourceIdentity struct {
	Author string     `json:"author" yaml:"author" validate:"required"`
	Name   string     `json:"name" yaml:"name" validate:"required"`
	Label  I18nObject `json:"label" yaml:"label" validate:"required"`
	Icon   string     `json:"icon" yaml:"icon" validate:"omitempty"`
}

type DatasourceOutputSchema

type DatasourceOutputSchema map[string]any

func (*DatasourceOutputSchema) UnmarshalJSON

func (d *DatasourceOutputSchema) UnmarshalJSON(data []byte) error

UnmarshalJSON handles JSON unmarshaling

func (*DatasourceOutputSchema) UnmarshalYAML

func (d *DatasourceOutputSchema) UnmarshalYAML(value *yaml.Node) error

UnmarshalYAML handles YAML unmarshaling

type DatasourceParameter

type DatasourceParameter struct {
	Name         string                  `json:"name" yaml:"name" validate:"required,gt=0,lt=1024"`
	Label        I18nObject              `json:"label" yaml:"label" validate:"required"`
	Type         DatasourceParameterType `json:"type" yaml:"type" validate:"required,datasource_parameter_type"`
	Scope        *string                 `json:"scope" yaml:"scope" validate:"omitempty,max=1024,is_scope"`
	Required     bool                    `json:"required" yaml:"required"`
	AutoGenerate *ParameterAutoGenerate  `json:"auto_generate" yaml:"auto_generate" validate:"omitempty"`
	Template     *ParameterTemplate      `json:"template" yaml:"template" validate:"omitempty"`
	Default      any                     `json:"default" yaml:"default" validate:"omitempty,is_basic_type"`
	Min          *float64                `json:"min" yaml:"min" validate:"omitempty"`
	Max          *float64                `json:"max" yaml:"max" validate:"omitempty"`
	Precision    *int                    `json:"precision" yaml:"precision" validate:"omitempty"`
	Options      []ParameterOption       `json:"options" yaml:"options" validate:"omitempty,dive"`
	Description  I18nObject              `json:"description" yaml:"description" validate:"required"`
}

type DatasourceParameterType

type DatasourceParameterType string
const (
	DATASOURCE_PARAMETER_TYPE_STRING       DatasourceParameterType = STRING
	DATASOURCE_PARAMETER_TYPE_NUMBER       DatasourceParameterType = NUMBER
	DATASOURCE_PARAMETER_TYPE_BOOLEAN      DatasourceParameterType = BOOLEAN
	DATASOURCE_PARAMETER_TYPE_SELECT       DatasourceParameterType = SELECT
	DATASOURCE_PARAMETER_TYPE_SECRET_INPUT DatasourceParameterType = SECRET_INPUT
)

type DatasourceProviderDeclaration

type DatasourceProviderDeclaration struct {
	Identity          DatasourceProviderIdentity `json:"identity" yaml:"identity" validate:"required"`
	CredentialsSchema []ProviderConfig           `json:"credentials_schema" yaml:"credentials_schema" validate:"omitempty,dive"`
	OAuthSchema       *OAuthSchema               `json:"oauth_schema" yaml:"oauth_schema" validate:"omitempty"`
	ProviderType      DatasourceType             `json:"provider_type" yaml:"provider_type" validate:"required,datasource_provider_type"`
	Datasources       []DatasourceDeclaration    `json:"datasources" yaml:"datasources" validate:"required,dive"`
	DatasourceFiles   []string                   `json:"-" yaml:"-"`
}

func (*DatasourceProviderDeclaration) MarshalJSON

func (t *DatasourceProviderDeclaration) MarshalJSON() ([]byte, error)

func (*DatasourceProviderDeclaration) UnmarshalJSON

func (t *DatasourceProviderDeclaration) UnmarshalJSON(data []byte) error

func (*DatasourceProviderDeclaration) UnmarshalYAML

func (t *DatasourceProviderDeclaration) UnmarshalYAML(value *yaml.Node) error

type DatasourceProviderIdentity

type DatasourceProviderIdentity struct {
	Author      string                        `json:"author" yaml:"author" validate:"required"`
	Name        string                        `json:"name" yaml:"name" validate:"required"`
	Description I18nObject                    `json:"description" yaml:"description" validate:"required"`
	Icon        string                        `json:"icon" yaml:"icon" validate:"required"`
	Label       I18nObject                    `json:"label" yaml:"label" validate:"required"`
	Tags        []manifest_entities.PluginTag `json:"tags" yaml:"tags" validate:"omitempty,dive,plugin_tag"`
}

type DatasourceType

type DatasourceType string
const (
	DatasourceTypeWebsiteCrawl   DatasourceType = "website_crawl"
	DatasourceTypeOnlineDocument DatasourceType = "online_document"
	DatasourceTypeOnlineDrive    DatasourceType = "online_drive"
)

type DefaultParameterName

type DefaultParameterName string
const (
	TEMPERATURE       DefaultParameterName = "temperature"
	TOP_P             DefaultParameterName = "top_p"
	TOP_K             DefaultParameterName = "top_k"
	PRESENCE_PENALTY  DefaultParameterName = "presence_penalty"
	FREQUENCY_PENALTY DefaultParameterName = "frequency_penalty"
	MAX_TOKENS        DefaultParameterName = "max_tokens"
	RESPONSE_FORMAT   DefaultParameterName = "response_format"
	JSON_SCHEMA       DefaultParameterName = "json_schema"
)

type EndpointDeclaration

type EndpointDeclaration struct {
	Path   string         `json:"path" yaml:"path" validate:"required"`
	Method EndpointMethod `json:"method" yaml:"method" validate:"required,is_available_endpoint_method"`
	Hidden bool           `json:"hidden" yaml:"hidden" validate:"omitempty"`
}

type EndpointMethod

type EndpointMethod string
const (
	EndpointMethodHead    EndpointMethod = "HEAD"
	EndpointMethodGet     EndpointMethod = "GET"
	EndpointMethodPost    EndpointMethod = "POST"
	EndpointMethodPut     EndpointMethod = "PUT"
	EndpointMethodDelete  EndpointMethod = "DELETE"
	EndpointMethodOptions EndpointMethod = "OPTIONS"
)

type EndpointProviderDeclaration

type EndpointProviderDeclaration struct {
	Settings      []ProviderConfig      `json:"settings" yaml:"settings" validate:"omitempty,dive"`
	Endpoints     []EndpointDeclaration `json:"endpoints" yaml:"endpoint_declarations" validate:"omitempty,dive"`
	EndpointFiles []string              `json:"-" yaml:"-"`
}

func (*EndpointProviderDeclaration) UnmarshalJSON

func (e *EndpointProviderDeclaration) UnmarshalJSON(data []byte) error

func (*EndpointProviderDeclaration) UnmarshalYAML

func (e *EndpointProviderDeclaration) UnmarshalYAML(node *yaml.Node) error

type ErrorResponse

type ErrorResponse struct {
	Message   string         `json:"message"`
	ErrorType string         `json:"error_type"`
	Args      map[string]any `json:"args" validate:"omitempty,max=10"` // max 10 args
}

func (*ErrorResponse) Error

func (e *ErrorResponse) Error() string

type EventDeclaration

type EventDeclaration struct {
	Identity     EventIdentity    `json:"identity" yaml:"identity" validate:"required"`
	Parameters   []EventParameter `json:"parameters" yaml:"parameters" validate:"omitempty,dive"`
	Description  I18nObject       `json:"description" yaml:"description" validate:"required"`
	OutputSchema map[string]any   `json:"output_schema,omitempty" yaml:"output_schema,omitempty"`
}

EventDeclaration represents the configuration of an event

type EventIdentity

type EventIdentity struct {
	Author string     `json:"author" yaml:"author" validate:"required"`
	Name   string     `json:"name" yaml:"name" validate:"required,event_identity_name"`
	Label  I18nObject `json:"label" yaml:"label" validate:"required"`
}

EventIdentity represents the identity of the event

type EventParameter

type EventParameter struct {
	Name         string                 `json:"name" yaml:"name" validate:"required"`
	Label        I18nObject             `json:"label" yaml:"label" validate:"required"`
	Type         EventParameterType     `json:"type" yaml:"type" validate:"required,event_parameter_type"`
	AutoGenerate *ParameterAutoGenerate `json:"auto_generate,omitempty" yaml:"auto_generate,omitempty"`
	Template     *ParameterTemplate     `json:"template,omitempty" yaml:"template,omitempty"`
	Scope        *string                `json:"scope,omitempty" yaml:"scope,omitempty"`
	Required     bool                   `json:"required" yaml:"required"`
	Multiple     bool                   `json:"multiple,omitempty" yaml:"multiple,omitempty"`
	Default      any                    `json:"default,omitempty" yaml:"default,omitempty"`
	Min          *float64               `json:"min,omitempty" yaml:"min,omitempty"`
	Max          *float64               `json:"max,omitempty" yaml:"max,omitempty"`
	Precision    *int                   `json:"precision,omitempty" yaml:"precision,omitempty"`
	Options      []EventParameterOption `json:"options,omitempty" yaml:"options,omitempty" validate:"omitempty,dive"`
	Description  *I18nObject            `json:"description,omitempty" yaml:"description,omitempty"`
}

EventParameter represents the parameter of the event

type EventParameterOption

type EventParameterOption struct {
	Label I18nObject `json:"label" yaml:"label" validate:"required"`
	Value any        `json:"value" yaml:"value" validate:"required"`
}

EventParameterOption represents the option of the event parameter

type EventParameterType

type EventParameterType string

EventParameterType represents the type of the parameter

const (
	EVENT_PARAMETER_TYPE_STRING         EventParameterType = STRING
	EVENT_PARAMETER_TYPE_NUMBER         EventParameterType = NUMBER
	EVENT_PARAMETER_TYPE_BOOLEAN        EventParameterType = BOOLEAN
	EVENT_PARAMETER_TYPE_SELECT         EventParameterType = SELECT
	EVENT_PARAMETER_TYPE_FILE           EventParameterType = FILE
	EVENT_PARAMETER_TYPE_FILES          EventParameterType = FILES
	EVENT_PARAMETER_TYPE_MODEL_SELECTOR EventParameterType = MODEL_SELECTOR
	EVENT_PARAMETER_TYPE_APP_SELECTOR   EventParameterType = APP_SELECTOR
	EVENT_PARAMETER_TYPE_OBJECT         EventParameterType = OBJECT
	EVENT_PARAMETER_TYPE_ARRAY          EventParameterType = ARRAY
	EVENT_PARAMETER_TYPE_DYNAMIC_SELECT EventParameterType = DYNAMIC_SELECT
	EVENT_PARAMETER_TYPE_CHECKBOX       EventParameterType = CHECKBOX
)

type FieldModelSchema

type FieldModelSchema struct {
	Label       I18nObject  `json:"label" yaml:"label" validate:"required"`
	Placeholder *I18nObject `json:"placeholder" yaml:"placeholder" validate:"omitempty"`
}

type I18nObject

type I18nObject struct {
	EnUS   string `json:"en_US" yaml:"en_US" validate:"required,gt=0,lt=1024"`
	JaJp   string `json:"ja_JP,omitempty" yaml:"ja_JP,omitempty" validate:"lt=1024"`
	ZhHans string `json:"zh_Hans,omitempty" yaml:"zh_Hans,omitempty" validate:"lt=1024"`
	PtBr   string `json:"pt_BR,omitempty" yaml:"pt_BR,omitempty" validate:"lt=1024"`
}

func NewI18nObject

func NewI18nObject(def string) I18nObject

type InvokePluginRequest

type InvokePluginRequest[T any] struct {
	InvokePluginUserIdentity
	BasePluginIdentifier

	UniqueIdentifier PluginUniqueIdentifier `json:"unique_identifier"`
	ConversationID   *string                `json:"conversation_id"`
	MessageID        *string                `json:"message_id"`
	AppID            *string                `json:"app_id"`
	EndpointID       *string                `json:"endpoint_id"`
	Context          map[string]any         `json:"context"`

	Data T `json:"data" validate:"required"`
}

type InvokePluginUserIdentity

type InvokePluginUserIdentity struct {
	TenantId string `json:"tenant_id" validate:"required" uri:"tenant_id"`
	UserId   string `json:"user_id"`
}

type ModelConfigScope

type ModelConfigScope string
const (
	MODEL_CONFIG_SCOPE_ALL            ModelConfigScope = "all"
	MODEL_CONFIG_SCOPE_LLM            ModelConfigScope = "llm"
	MODEL_CONFIG_SCOPE_TEXT_EMBEDDING ModelConfigScope = "text-embedding"
	MODEL_CONFIG_SCOPE_RERANK         ModelConfigScope = "rerank"
	MODEL_CONFIG_SCOPE_TTS            ModelConfigScope = "tts"
	MODEL_CONFIG_SCOPE_SPEECH2TEXT    ModelConfigScope = "speech2text"
	MODEL_CONFIG_SCOPE_MODERATION     ModelConfigScope = "moderation"
	MODEL_CONFIG_SCOPE_VISION         ModelConfigScope = "vision"
	MODEL_CONFIG_SCOPE_DOCUMENT       ModelConfigScope = "document"
	MODEL_CONFIG_SCOPE_TOOL_CALL      ModelConfigScope = "tool-call"
)

type ModelCredentialSchema

type ModelCredentialSchema struct {
	Model                 FieldModelSchema                    `json:"model" yaml:"model" validate:"required"`
	CredentialFormSchemas []ModelProviderCredentialFormSchema `json:"credential_form_schemas" yaml:"credential_form_schemas" validate:"omitempty,lte=32,dive"`
}

type ModelDeclaration

type ModelDeclaration struct {
	Model           string                         `json:"model" yaml:"model" validate:"required,lt=256"`
	Label           I18nObject                     `json:"label" yaml:"label" validate:"required"`
	ModelType       ModelType                      `json:"model_type" yaml:"model_type" validate:"required,model_type"`
	Features        []string                       `json:"features" yaml:"features" validate:"omitempty,lte=256,dive,lt=256"`
	FetchFrom       ModelProviderConfigurateMethod `json:"fetch_from" yaml:"fetch_from" validate:"omitempty,model_provider_configurate_method"`
	ModelProperties map[string]any                 `json:"model_properties" yaml:"model_properties" validate:"omitempty"`
	Deprecated      bool                           `json:"deprecated" yaml:"deprecated"`
	ParameterRules  []ModelParameterRule           `json:"parameter_rules" yaml:"parameter_rules" validate:"omitempty,lte=128,dive,parameter_rule"`
	PriceConfig     *ModelPriceConfig              `json:"pricing" yaml:"pricing" validate:"omitempty"`
}

func (ModelDeclaration) MarshalJSON

func (m ModelDeclaration) MarshalJSON() ([]byte, error)

func (*ModelDeclaration) UnmarshalJSON

func (m *ModelDeclaration) UnmarshalJSON(data []byte) error

func (*ModelDeclaration) UnmarshalYAML

func (m *ModelDeclaration) UnmarshalYAML(value *yaml.Node) error

type ModelParameterRule

type ModelParameterRule struct {
	Name        string              `json:"name" yaml:"name" validate:"required,lt=256"`
	UseTemplate *string             `json:"use_template" yaml:"use_template" validate:"omitempty,lt=256"`
	Label       *I18nObject         `json:"label" yaml:"label" validate:"omitempty"`
	Type        *ModelParameterType `json:"type" yaml:"type" validate:"omitempty,model_parameter_type"`
	Help        *I18nObject         `json:"help" yaml:"help" validate:"omitempty"`
	Required    bool                `json:"required" yaml:"required"`
	Default     *any                `json:"default" yaml:"default" validate:"omitempty,is_basic_type"`
	Min         *float64            `json:"min" yaml:"min" validate:"omitempty"`
	Max         *float64            `json:"max" yaml:"max" validate:"omitempty"`
	Precision   *int                `json:"precision" yaml:"precision" validate:"omitempty"`
	Options     []string            `json:"options" yaml:"options" validate:"omitempty,dive,lt=256"`
}

func (*ModelParameterRule) TransformTemplate

func (m *ModelParameterRule) TransformTemplate() error

func (*ModelParameterRule) UnmarshalJSON

func (m *ModelParameterRule) UnmarshalJSON(data []byte) error

func (*ModelParameterRule) UnmarshalYAML

func (m *ModelParameterRule) UnmarshalYAML(value *yaml.Node) error

type ModelParameterType

type ModelParameterType string
const (
	PARAMETER_TYPE_FLOAT   ModelParameterType = "float"
	PARAMETER_TYPE_INT     ModelParameterType = "int"
	PARAMETER_TYPE_STRING  ModelParameterType = "string"
	PARAMETER_TYPE_BOOLEAN ModelParameterType = "boolean"
	PARAMETER_TYPE_TEXT    ModelParameterType = "text"
)

type ModelPosition

type ModelPosition struct {
	LLM           *[]string `json:"llm,omitempty" yaml:"llm,omitempty"`
	TextEmbedding *[]string `json:"text_embedding,omitempty" yaml:"text_embedding,omitempty"`
	Rerank        *[]string `json:"rerank,omitempty" yaml:"rerank,omitempty"`
	TTS           *[]string `json:"tts,omitempty" yaml:"tts,omitempty"`
	Speech2text   *[]string `json:"speech2text,omitempty" yaml:"speech2text,omitempty"`
	Moderation    *[]string `json:"moderation,omitempty" yaml:"moderation,omitempty"`
}

type ModelPriceConfig

type ModelPriceConfig struct {
	Input    decimal.Decimal  `json:"input" yaml:"input" validate:"required"`
	Output   *decimal.Decimal `json:"output" yaml:"output" validate:"omitempty"`
	Unit     decimal.Decimal  `json:"unit" yaml:"unit" validate:"required"`
	Currency string           `json:"currency" yaml:"currency" validate:"required"`
}

type ModelProviderConfigurateMethod

type ModelProviderConfigurateMethod string
const (
	CONFIGURATE_METHOD_PREDEFINED_MODEL   ModelProviderConfigurateMethod = "predefined-model"
	CONFIGURATE_METHOD_CUSTOMIZABLE_MODEL ModelProviderConfigurateMethod = "customizable-model"
)

type ModelProviderCredentialFormSchema

type ModelProviderCredentialFormSchema struct {
	Variable    string                          `json:"variable" yaml:"variable" validate:"required,lt=256"`
	Label       I18nObject                      `json:"label" yaml:"label" validate:"required"`
	Type        ModelProviderFormType           `json:"type" yaml:"type" validate:"required,model_provider_form_type"`
	Required    bool                            `json:"required" yaml:"required"`
	Default     *string                         `json:"default" yaml:"default" validate:"omitempty,lt=256"`
	Options     []ModelProviderFormOption       `json:"options" yaml:"options" validate:"omitempty,lte=128,dive"`
	Placeholder *I18nObject                     `json:"placeholder" yaml:"placeholder" validate:"omitempty"`
	MaxLength   int                             `json:"max_length" yaml:"max_length"`
	ShowOn      []ModelProviderFormShowOnObject `json:"show_on" yaml:"show_on" validate:"omitempty,lte=16,dive"`
}

func (*ModelProviderCredentialFormSchema) UnmarshalJSON

func (m *ModelProviderCredentialFormSchema) UnmarshalJSON(data []byte) error

func (*ModelProviderCredentialFormSchema) UnmarshalYAML

func (m *ModelProviderCredentialFormSchema) UnmarshalYAML(value *yaml.Node) error

type ModelProviderCredentialSchema

type ModelProviderCredentialSchema struct {
	CredentialFormSchemas []ModelProviderCredentialFormSchema `json:"credential_form_schemas" yaml:"credential_form_schemas" validate:"omitempty,lte=32,dive"`
}

type ModelProviderDeclaration

type ModelProviderDeclaration struct {
	Provider                 string                           `json:"provider" yaml:"provider" validate:"required,lt=256"`
	Label                    I18nObject                       `json:"label" yaml:"label" validate:"required"`
	Description              *I18nObject                      `json:"description" yaml:"description,omitempty" validate:"omitempty"`
	IconSmall                *I18nObject                      `json:"icon_small" yaml:"icon_small,omitempty" validate:"omitempty"`
	IconLarge                *I18nObject                      `json:"icon_large" yaml:"icon_large,omitempty" validate:"omitempty"`
	IconSmallDark            *I18nObject                      `json:"icon_small_dark" yaml:"icon_small_dark,omitempty" validate:"omitempty"`
	IconLargeDark            *I18nObject                      `json:"icon_large_dark" yaml:"icon_large_dark,omitempty" validate:"omitempty"`
	Background               *string                          `json:"background" yaml:"background,omitempty" validate:"omitempty"`
	Help                     *ModelProviderHelpEntity         `json:"help" yaml:"help,omitempty" validate:"omitempty"`
	SupportedModelTypes      []ModelType                      `json:"supported_model_types" yaml:"supported_model_types" validate:"required,lte=16,dive,model_type"`
	ConfigurateMethods       []ModelProviderConfigurateMethod `json:"configurate_methods" yaml:"configurate_methods" validate:"required,lte=16,dive,model_provider_configurate_method"`
	ProviderCredentialSchema *ModelProviderCredentialSchema   `json:"provider_credential_schema" yaml:"provider_credential_schema,omitempty" validate:"omitempty"`
	ModelCredentialSchema    *ModelCredentialSchema           `json:"model_credential_schema" yaml:"model_credential_schema,omitempty" validate:"omitempty"`
	Position                 *ModelPosition                   `json:"position,omitempty" yaml:"position,omitempty"`
	Models                   []ModelDeclaration               `json:"models" yaml:"model_declarations,omitempty"`
	ModelFiles               []string                         `json:"-" yaml:"-"`
	PositionFiles            map[string]string                `json:"-" yaml:"-"`
}

func (*ModelProviderDeclaration) MarshalJSON

func (m *ModelProviderDeclaration) MarshalJSON() ([]byte, error)

func (*ModelProviderDeclaration) UnmarshalJSON

func (m *ModelProviderDeclaration) UnmarshalJSON(data []byte) error

func (*ModelProviderDeclaration) UnmarshalYAML

func (m *ModelProviderDeclaration) UnmarshalYAML(value *yaml.Node) error

type ModelProviderFormOption

type ModelProviderFormOption struct {
	Label  I18nObject                      `json:"label" yaml:"label" validate:"required"`
	Value  string                          `json:"value" yaml:"value" validate:"required,lt=256"`
	ShowOn []ModelProviderFormShowOnObject `json:"show_on" yaml:"show_on" validate:"omitempty,lte=16,dive"`
}

func (*ModelProviderFormOption) UnmarshalJSON

func (m *ModelProviderFormOption) UnmarshalJSON(data []byte) error

func (*ModelProviderFormOption) UnmarshalYAML

func (m *ModelProviderFormOption) UnmarshalYAML(value *yaml.Node) error

type ModelProviderFormShowOnObject

type ModelProviderFormShowOnObject struct {
	Variable string `json:"variable" yaml:"variable" validate:"required,lt=256"`
	Value    string `json:"value" yaml:"value" validate:"required,lt=256"`
}

type ModelProviderFormType

type ModelProviderFormType string
const (
	FORM_TYPE_TEXT_INPUT   ModelProviderFormType = "text-input"
	FORM_TYPE_SECRET_INPUT ModelProviderFormType = "secret-input"
	FORM_TYPE_SELECT       ModelProviderFormType = "select"
	FORM_TYPE_RADIO        ModelProviderFormType = "radio"
	FORM_TYPE_SWITCH       ModelProviderFormType = "switch"
)

type ModelProviderHelpEntity

type ModelProviderHelpEntity struct {
	Title I18nObject `json:"title" yaml:"title" validate:"required"`
	URL   I18nObject `json:"url" yaml:"url" validate:"required"`
}

type ModelType

type ModelType string
const (
	MODEL_TYPE_LLM                  ModelType = "llm"
	MODEL_TYPE_TEXT_EMBEDDING       ModelType = "text-embedding"
	MODEL_TYPE_RERANKING            ModelType = "rerank"
	MODEL_TYPE_SPEECH2TEXT          ModelType = "speech2text"
	MODEL_TYPE_MODERATION           ModelType = "moderation"
	MODEL_TYPE_TTS                  ModelType = "tts"
	MODEL_TYPE_TEXT2IMG             ModelType = "text2img"
	MODEL_TYPE_MULTIMODAL_EMBEDDING ModelType = "multimodal-embedding"
	MODEL_TYPE_MULTIMODAL_RERANK    ModelType = "multimodal-rerank"
)

type OAuthSchema

type OAuthSchema struct {
	// ClientSchema contains client_id, client_secret, redirect_uri, etc. which are required to be set by system admin
	ClientSchema []ProviderConfig `json:"client_schema" yaml:"client_schema" validate:"omitempty,dive"`

	// CredentialsSchema contains schema of access_token, refresh_token, etc.
	CredentialsSchema []ProviderConfig `json:"credentials_schema" yaml:"credentials_schema" validate:"omitempty,dive"`
}

type ParameterAutoGenerate

type ParameterAutoGenerate struct {
	Type ParameterAutoGenerateType `json:"type" yaml:"type" validate:"required,parameter_auto_generate_type"`
}

type ParameterAutoGenerateType

type ParameterAutoGenerateType string
const (
	PARAMETER_AUTO_GENERATE_TYPE_PROMPT_INSTRUCTION ParameterAutoGenerateType = "prompt_instruction"
)

type ParameterOption

type ParameterOption struct {
	Value string     `json:"value" yaml:"value" validate:"required"`
	Label I18nObject `json:"label" yaml:"label" validate:"required"`
	Icon  string     `json:"icon" yaml:"icon" validate:"omitempty"`
}

type ParameterTemplate

type ParameterTemplate struct {
	Enabled bool `json:"enabled" yaml:"enabled"`
}

type PluginBasicInfoInterface

type PluginBasicInfoInterface interface {
	// returns the runtime type of the plugin
	Type() PluginRuntimeType
	// returns the plugin configuration
	Configuration() *PluginDeclaration
	// unique identity of the plugin
	Identity() (PluginUniqueIdentifier, error)
	// hashed identity of the plugin
	HashedIdentity() (string, error)
	// returns the checksum of the plugin
	Checksum() (string, error)
}

type PluginCategory

type PluginCategory string
const (
	PLUGIN_CATEGORY_TOOL           PluginCategory = "tool"
	PLUGIN_CATEGORY_MODEL          PluginCategory = "model"
	PLUGIN_CATEGORY_EXTENSION      PluginCategory = "extension"
	PLUGIN_CATEGORY_AGENT_STRATEGY PluginCategory = "agent-strategy"
	PLUGIN_CATEGORY_DATASOURCE     PluginCategory = "datasource"
	PLUGIN_CATEGORY_TRIGGER        PluginCategory = "trigger"
)

type PluginClusterLifetime

type PluginClusterLifetime interface {
	// returns the runtime state of the plugin
	RuntimeState() PluginRuntimeState
}

type PluginDeclaration

type PluginDeclaration struct {
	PluginDeclarationWithoutAdvancedFields `yaml:",inline"`
	Verified                               bool                              `json:"verified" yaml:"verified"`
	Endpoint                               *EndpointProviderDeclaration      `json:"endpoint,omitempty" yaml:"endpoint,omitempty" validate:"omitempty"`
	Model                                  *ModelProviderDeclaration         `json:"model,omitempty" yaml:"model,omitempty" validate:"omitempty"`
	Tool                                   *ToolProviderDeclaration          `json:"tool,omitempty" yaml:"tool,omitempty" validate:"omitempty"`
	AgentStrategy                          *AgentStrategyProviderDeclaration `json:"agent_strategy,omitempty" yaml:"agent_strategy,omitempty" validate:"omitempty"`
	Datasource                             *DatasourceProviderDeclaration    `json:"datasource,omitempty" yaml:"datasource,omitempty" validate:"omitempty"`
	Trigger                                *TriggerProviderDeclaration       `json:"trigger,omitempty" yaml:"trigger,omitempty" validate:"omitempty"`
}

func UnmarshalPluginDeclarationFromJSON

func UnmarshalPluginDeclarationFromJSON(data []byte) (*PluginDeclaration, error)

func UnmarshalPluginDeclarationFromYaml

func UnmarshalPluginDeclarationFromYaml(data []byte) (*PluginDeclaration, error)

func (*PluginDeclaration) Category

func (p *PluginDeclaration) Category() PluginCategory

func (*PluginDeclaration) FillInDefaultValues

func (p *PluginDeclaration) FillInDefaultValues()

func (*PluginDeclaration) Identity

func (p *PluginDeclaration) Identity() string

func (*PluginDeclaration) ManifestValidate

func (p *PluginDeclaration) ManifestValidate() error

func (*PluginDeclaration) MarshalJSON

func (p *PluginDeclaration) MarshalJSON() ([]byte, error)

func (*PluginDeclaration) UnmarshalJSON

func (p *PluginDeclaration) UnmarshalJSON(data []byte) error

type PluginDeclarationPlatformArch

type PluginDeclarationPlatformArch string

type PluginDeclarationWithoutAdvancedFields

type PluginDeclarationWithoutAdvancedFields struct {
	Version     manifest_entities.Version          `json:"version" yaml:"version,omitempty" validate:"required,version"`
	Type        manifest_entities.DifyManifestType `json:"type" yaml:"type,omitempty" validate:"required,eq=plugin"`
	Author      string                             `json:"author" yaml:"author,omitempty" validate:"omitempty,max=64"`
	Name        string                             `json:"name" yaml:"name,omitempty" validate:"required,max=128"`
	Label       I18nObject                         `json:"label" yaml:"label" validate:"required"`
	Description I18nObject                         `json:"description" yaml:"description" validate:"required"`
	Icon        string                             `json:"icon" yaml:"icon,omitempty" validate:"required,max=128"`
	IconDark    string                             `json:"icon_dark" yaml:"icon_dark,omitempty" validate:"omitempty,max=128"`
	Resource    PluginResourceRequirement          `json:"resource" yaml:"resource,omitempty" validate:"required"`
	Plugins     PluginExtensions                   `json:"plugins" yaml:"plugins,omitempty" validate:"required"`
	Meta        PluginMeta                         `json:"meta" yaml:"meta,omitempty" validate:"required"`
	Tags        []manifest_entities.PluginTag      `json:"tags" yaml:"tags,omitempty" validate:"omitempty,dive,plugin_tag,max=128"`
	CreatedAt   time.Time                          `json:"created_at" yaml:"created_at,omitempty" validate:"required"`
	Privacy     *string                            `json:"privacy,omitempty" yaml:"privacy,omitempty" validate:"omitempty"`
	Repo        *string                            `json:"repo,omitempty" yaml:"repo,omitempty" validate:"omitempty,url"`
}

func (*PluginDeclarationWithoutAdvancedFields) UnmarshalJSON

func (p *PluginDeclarationWithoutAdvancedFields) UnmarshalJSON(data []byte) error

type PluginEventType

type PluginEventType string
const (
	PLUGIN_EVENT_LOG       PluginEventType = "log"
	PLUGIN_EVENT_SESSION   PluginEventType = "session"
	PLUGIN_EVENT_ERROR     PluginEventType = "error"
	PLUGIN_EVENT_HEARTBEAT PluginEventType = "heartbeat"
)

type PluginExtensions

type PluginExtensions struct {
	Tools           []string `json:"tools" yaml:"tools,omitempty" validate:"omitempty,dive,max=128"`
	Models          []string `json:"models" yaml:"models,omitempty" validate:"omitempty,dive,max=128"`
	Endpoints       []string `json:"endpoints" yaml:"endpoints,omitempty" validate:"omitempty,dive,max=128"`
	AgentStrategies []string `json:"agent_strategies" yaml:"agent_strategies,omitempty" validate:"omitempty,dive,max=128"`
	Datasources     []string `json:"datasources" yaml:"datasources,omitempty" validate:"omitempty,dive,max=128"`
	Triggers        []string `json:"triggers" yaml:"triggers,omitempty" validate:"omitempty,dive,max=128"`
}

type PluginFullDuplexLifetime

type PluginFullDuplexLifetime interface {
	PluginLifetime

	// before the plugin starts, it will call this method to initialize the environment
	InitEnvironment() error
	// Cleanup the plugin runtime
	Cleanup()
	// set the plugin to active
	SetActive()
	// set the plugin to launching
	SetLaunching()
	// set the plugin to restarting
	SetRestarting()
	// set the plugin to pending
	SetPending()
	// set the active time of the plugin
	SetActiveAt(t time.Time)
	// set the scheduled time of the plugin
	SetScheduledAt(t time.Time)
}

type PluginLogEvent

type PluginLogEvent struct {
	Level     string  `json:"level"`
	Message   string  `json:"message"`
	Timestamp float64 `json:"timestamp"`
}

type PluginMeta

type PluginMeta struct {
	Version            string           `json:"version" yaml:"version" validate:"required,version"`
	Arch               []constants.Arch `json:"arch" yaml:"arch" validate:"required,dive,is_available_arch"`
	Runner             PluginRunner     `json:"runner" yaml:"runner" validate:"required"`
	MinimumDifyVersion *string          `json:"minimum_dify_version" yaml:"minimum_dify_version"`
}

type PluginPermissionAppRequirement

type PluginPermissionAppRequirement struct {
	Enabled bool `json:"enabled" yaml:"enabled"`
}

type PluginPermissionEndpointRequirement

type PluginPermissionEndpointRequirement struct {
	Enabled bool `json:"enabled" yaml:"enabled"`
}

type PluginPermissionModelRequirement

type PluginPermissionModelRequirement struct {
	Enabled       bool `json:"enabled" yaml:"enabled"`
	LLM           bool `json:"llm" yaml:"llm"`
	TextEmbedding bool `json:"text_embedding" yaml:"text_embedding"`
	Rerank        bool `json:"rerank" yaml:"rerank"`
	TTS           bool `json:"tts" yaml:"tts"`
	Speech2text   bool `json:"speech2text" yaml:"speech2text"`
	Moderation    bool `json:"moderation" yaml:"moderation"`
}

type PluginPermissionNodeRequirement

type PluginPermissionNodeRequirement struct {
	Enabled bool `json:"enabled" yaml:"enabled"`
}

type PluginPermissionRequirement

type PluginPermissionRequirement struct {
	Tool     *PluginPermissionToolRequirement     `json:"tool,omitempty" yaml:"tool,omitempty" validate:"omitempty"`
	Model    *PluginPermissionModelRequirement    `json:"model,omitempty" yaml:"model,omitempty" validate:"omitempty"`
	Node     *PluginPermissionNodeRequirement     `json:"node,omitempty" yaml:"node,omitempty" validate:"omitempty"`
	Endpoint *PluginPermissionEndpointRequirement `json:"endpoint,omitempty" yaml:"endpoint,omitempty" validate:"omitempty"`
	App      *PluginPermissionAppRequirement      `json:"app,omitempty" yaml:"app,omitempty" validate:"omitempty"`
	Storage  *PluginPermissionStorageRequirement  `json:"storage,omitempty" yaml:"storage,omitempty" validate:"omitempty"`
}

func (*PluginPermissionRequirement) AllowInvokeApp

func (p *PluginPermissionRequirement) AllowInvokeApp() bool

func (*PluginPermissionRequirement) AllowInvokeLLM

func (p *PluginPermissionRequirement) AllowInvokeLLM() bool

func (*PluginPermissionRequirement) AllowInvokeModel

func (p *PluginPermissionRequirement) AllowInvokeModel() bool

func (*PluginPermissionRequirement) AllowInvokeModeration

func (p *PluginPermissionRequirement) AllowInvokeModeration() bool

func (*PluginPermissionRequirement) AllowInvokeNode

func (p *PluginPermissionRequirement) AllowInvokeNode() bool

func (*PluginPermissionRequirement) AllowInvokeRerank

func (p *PluginPermissionRequirement) AllowInvokeRerank() bool

func (*PluginPermissionRequirement) AllowInvokeSpeech2Text

func (p *PluginPermissionRequirement) AllowInvokeSpeech2Text() bool

func (*PluginPermissionRequirement) AllowInvokeStorage

func (p *PluginPermissionRequirement) AllowInvokeStorage() bool

func (*PluginPermissionRequirement) AllowInvokeTTS

func (p *PluginPermissionRequirement) AllowInvokeTTS() bool

func (*PluginPermissionRequirement) AllowInvokeTextEmbedding

func (p *PluginPermissionRequirement) AllowInvokeTextEmbedding() bool

func (*PluginPermissionRequirement) AllowInvokeTool

func (p *PluginPermissionRequirement) AllowInvokeTool() bool

func (*PluginPermissionRequirement) AllowRegisterEndpoint

func (p *PluginPermissionRequirement) AllowRegisterEndpoint() bool

type PluginPermissionStorageRequirement

type PluginPermissionStorageRequirement struct {
	Enabled bool   `json:"enabled" yaml:"enabled"`
	Size    uint64 `json:"size" yaml:"size" validate:"min=1024,max=1073741824"` // min 1024 bytes, max 1G
}

type PluginPermissionToolRequirement

type PluginPermissionToolRequirement struct {
	Enabled bool `json:"enabled" yaml:"enabled"`
}

type PluginResourceRequirement

type PluginResourceRequirement struct {
	// Memory in bytes
	Memory int64 `json:"memory" yaml:"memory" validate:"required"`
	// Permission requirements
	Permission *PluginPermissionRequirement `json:"permission,omitempty" yaml:"permission,omitempty" validate:"omitempty"`
}

type PluginRunner

type PluginRunner struct {
	Language   constants.Language `json:"language" yaml:"language" validate:"required,is_available_language"`
	Version    string             `json:"version" yaml:"version" validate:"required,max=128"`
	Entrypoint string             `json:"entrypoint" yaml:"entrypoint" validate:"required,max=256"`
}

type PluginRuntime

type PluginRuntime struct {
	State  PluginRuntimeState `json:"state"`
	Config PluginDeclaration  `json:"config"`
}

func (*PluginRuntime) Configuration

func (r *PluginRuntime) Configuration() *PluginDeclaration

func (*PluginRuntime) HashedIdentity

func (r *PluginRuntime) HashedIdentity() (string, error)

func (*PluginRuntime) InitState

func (r *PluginRuntime) InitState()

func (*PluginRuntime) RuntimeState

func (r *PluginRuntime) RuntimeState() PluginRuntimeState

func (*PluginRuntime) SetActive

func (r *PluginRuntime) SetActive()

func (*PluginRuntime) SetActiveAt

func (r *PluginRuntime) SetActiveAt(t time.Time)

func (*PluginRuntime) SetLaunching

func (r *PluginRuntime) SetLaunching()

func (*PluginRuntime) SetPending

func (r *PluginRuntime) SetPending()

func (*PluginRuntime) SetRestarting

func (r *PluginRuntime) SetRestarting()

func (*PluginRuntime) SetScheduledAt

func (r *PluginRuntime) SetScheduledAt(t time.Time)

func (*PluginRuntime) Stop

func (r *PluginRuntime) Stop()

func (*PluginRuntime) Stopped

func (r *PluginRuntime) Stopped() bool

func (*PluginRuntime) UpdateScheduledAt

func (r *PluginRuntime) UpdateScheduledAt(t time.Time)

type PluginRuntimeSessionIOInterface

type PluginRuntimeSessionIOInterface interface {
	PluginBasicInfoInterface
	// Listen listens for messages from the plugin
	Listen(session_id string) (*entities.Broadcast[SessionMessage], error)
	// Write writes a message to the plugin
	Write(session_id string, action access_types.PluginAccessAction, data []byte) error
}

type PluginRuntimeState

type PluginRuntimeState struct {
	Restarts    int        `json:"restarts"`
	Status      string     `json:"status"`
	WorkingPath string     `json:"working_path"`
	ActiveAt    *time.Time `json:"active_at"`
	StoppedAt   *time.Time `json:"stopped_at"`
	Verified    bool       `json:"verified"`
	ScheduledAt *time.Time `json:"scheduled_at"`
	Logs        []string   `json:"logs"`
}

func (*PluginRuntimeState) Hash

func (s *PluginRuntimeState) Hash() (uint64, error)

type PluginRuntimeType

type PluginRuntimeType string
const (
	PLUGIN_RUNTIME_TYPE_LOCAL      PluginRuntimeType = "local"
	PLUGIN_RUNTIME_TYPE_REMOTE     PluginRuntimeType = "remote"
	PLUGIN_RUNTIME_TYPE_SERVERLESS PluginRuntimeType = "serverless"
)

type PluginServerlessLifetime

type PluginServerlessLifetime interface {
	PluginLifetime

	// before the plugin starts, it will call this method to initialize the environment
	InitEnvironment() error
	// UploadPlugin uploads the plugin to the AWS Lambda
	UploadPlugin() error
}

type PluginUniqueIdentifier

type PluginUniqueIdentifier string

func NewPluginUniqueIdentifier

func NewPluginUniqueIdentifier(identifier string) (PluginUniqueIdentifier, error)

func (PluginUniqueIdentifier) Author

func (p PluginUniqueIdentifier) Author() string

func (PluginUniqueIdentifier) Checksum

func (p PluginUniqueIdentifier) Checksum() string

func (PluginUniqueIdentifier) PluginID

func (p PluginUniqueIdentifier) PluginID() string

func (PluginUniqueIdentifier) RemoteLike

func (p PluginUniqueIdentifier) RemoteLike() bool

func (PluginUniqueIdentifier) String

func (p PluginUniqueIdentifier) String() string

func (PluginUniqueIdentifier) Validate

func (p PluginUniqueIdentifier) Validate() error

func (PluginUniqueIdentifier) Version

type PluginUniversalEvent

type PluginUniversalEvent struct {
	SessionId string          `json:"session_id"`
	Event     PluginEventType `json:"event"`
	Data      json.RawMessage `json:"data"`
}

type ProviderConfig

type ProviderConfig struct {
	Name        string         `json:"name" validate:"omitempty,gt=0,lt=1024"`
	Type        ConfigType     `json:"type" validate:"required,credential_type"`
	Scope       *string        `json:"scope" validate:"omitempty,is_scope"`
	Required    bool           `json:"required"`
	Default     any            `json:"default" validate:"omitempty,is_basic_type"`
	Options     []ConfigOption `json:"options" validate:"omitempty,lt=128,dive"`
	Multiple    bool           `json:"multiple" validate:"omitempty"`
	Label       I18nObject     `json:"label" validate:"required"`
	Help        *I18nObject    `json:"help" validate:"omitempty"`
	URL         *string        `json:"url" validate:"omitempty"`
	Placeholder *I18nObject    `json:"placeholder" validate:"omitempty"`
}

type RemoteAssetPayload

type RemoteAssetPayload struct {
	Filename string `json:"filename" validate:"required"`
	Data     string `json:"data" validate:"required"`
}

type RemotePluginRegisterAssetChunk

type RemotePluginRegisterAssetChunk struct {
	Filename string `json:"filename" validate:"required"`
	Data     string `json:"data" validate:"required"`
	End      bool   `json:"end"` // if true, it's the last chunk of the file
}

type RemotePluginRegisterEventType

type RemotePluginRegisterEventType string
const (
	REGISTER_EVENT_TYPE_HAND_SHAKE                 RemotePluginRegisterEventType = "handshake"
	REGISTER_EVENT_TYPE_ASSET_CHUNK                RemotePluginRegisterEventType = "asset_chunk"
	REGISTER_EVENT_TYPE_MANIFEST_DECLARATION       RemotePluginRegisterEventType = "manifest_declaration"
	REGISTER_EVENT_TYPE_TOOL_DECLARATION           RemotePluginRegisterEventType = "tool_declaration"
	REGISTER_EVENT_TYPE_MODEL_DECLARATION          RemotePluginRegisterEventType = "model_declaration"
	REGISTER_EVENT_TYPE_ENDPOINT_DECLARATION       RemotePluginRegisterEventType = "endpoint_declaration"
	REGISTER_EVENT_TYPE_AGENT_STRATEGY_DECLARATION RemotePluginRegisterEventType = "agent_strategy_declaration"
	REGISTER_EVENT_TYPE_DATASOURCE_DECLARATION     RemotePluginRegisterEventType = "datasource_declaration"
	REGISTER_EVENT_TYPE_TRIGGER_DECLARATION        RemotePluginRegisterEventType = "trigger_declaration"
	REGISTER_EVENT_TYPE_END                        RemotePluginRegisterEventType = "end"
)

type RemotePluginRegisterHandshake

type RemotePluginRegisterHandshake struct {
	Key string `json:"key" validate:"required"`
}

type RemotePluginRegisterPayload

type RemotePluginRegisterPayload struct {
	Type RemotePluginRegisterEventType `json:"type" validate:"required"`
	Data json.RawMessage               `json:"data" validate:"required"`
}

type SESSION_MESSAGE_TYPE

type SESSION_MESSAGE_TYPE string
const (
	SESSION_MESSAGE_TYPE_STREAM SESSION_MESSAGE_TYPE = "stream"
	SESSION_MESSAGE_TYPE_END    SESSION_MESSAGE_TYPE = "end"
	SESSION_MESSAGE_TYPE_ERROR  SESSION_MESSAGE_TYPE = "error"
	SESSION_MESSAGE_TYPE_INVOKE SESSION_MESSAGE_TYPE = "invoke"
)

type SessionMessage

type SessionMessage struct {
	Type SESSION_MESSAGE_TYPE `json:"type" validate:"required"`
	Data json.RawMessage      `json:"data" validate:"required"`
}

type SubscriptionConstructor

type SubscriptionConstructor struct {
	Parameters        []EventParameter `json:"parameters" yaml:"parameters" validate:"omitempty,dive"`
	CredentialsSchema []ProviderConfig `json:"credentials_schema" yaml:"credentials_schema" validate:"omitempty,dive"`
	OAuthSchema       *OAuthSchema     `json:"oauth_schema,omitempty" yaml:"oauth_schema,omitempty" validate:"omitempty"`
}

SubscriptionConstructor represents the subscription constructor of the trigger provider

type ToolDeclaration

type ToolDeclaration struct {
	Identity             ToolIdentity     `json:"identity" yaml:"identity" validate:"required"`
	Description          ToolDescription  `json:"description" yaml:"description" validate:"required"`
	Parameters           []ToolParameter  `json:"parameters" yaml:"parameters" validate:"omitempty,dive"`
	OutputSchema         ToolOutputSchema `json:"output_schema,omitempty" yaml:"output_schema,omitempty"`
	HasRuntimeParameters bool             `json:"has_runtime_parameters" yaml:"has_runtime_parameters"`
}

type ToolDescription

type ToolDescription struct {
	Human I18nObject `json:"human" validate:"required"`
	LLM   string     `json:"llm" validate:"required"`
}

type ToolIdentity

type ToolIdentity struct {
	Author string     `json:"author" yaml:"author" validate:"required"`
	Name   string     `json:"name" yaml:"name" validate:"required,tool_identity_name"`
	Label  I18nObject `json:"label" yaml:"label" validate:"required"`
}

type ToolOutputSchema

type ToolOutputSchema map[string]any

func (*ToolOutputSchema) UnmarshalJSON

func (t *ToolOutputSchema) UnmarshalJSON(data []byte) error

UnmarshalJSON handles JSON unmarshaling

func (*ToolOutputSchema) UnmarshalYAML

func (t *ToolOutputSchema) UnmarshalYAML(value *yaml.Node) error

UnmarshalYAML handles YAML unmarshaling

type ToolParameter

type ToolParameter struct {
	Name             string                 `json:"name" yaml:"name" validate:"required,gt=0,lt=1024"`
	Label            I18nObject             `json:"label" yaml:"label" validate:"required"`
	HumanDescription I18nObject             `json:"human_description" yaml:"human_description" validate:"required"`
	Type             ToolParameterType      `json:"type" yaml:"type" validate:"required,tool_parameter_type"`
	Scope            *string                `json:"scope" yaml:"scope" validate:"omitempty,max=1024,is_scope"`
	Form             ToolParameterForm      `json:"form" yaml:"form" validate:"required,tool_parameter_form"`
	LLMDescription   string                 `json:"llm_description" yaml:"llm_description" validate:"omitempty"`
	Required         bool                   `json:"required" yaml:"required"`
	AutoGenerate     *ParameterAutoGenerate `json:"auto_generate" yaml:"auto_generate" validate:"omitempty"`
	Template         *ParameterTemplate     `json:"template" yaml:"template" validate:"omitempty"`
	Default          any                    `json:"default" yaml:"default" validate:"omitempty"`
	Min              *float64               `json:"min" yaml:"min" validate:"omitempty"`
	Max              *float64               `json:"max" yaml:"max" validate:"omitempty"`
	Multiple         bool                   `json:"multiple" yaml:"multiple" validate:"omitempty"`
	Precision        *int                   `json:"precision" yaml:"precision" validate:"omitempty"`
	Options          []ParameterOption      `json:"options" yaml:"options" validate:"omitempty,dive"`
}

type ToolParameterForm

type ToolParameterForm string
const (
	TOOL_PARAMETER_FORM_SCHEMA ToolParameterForm = "schema"
	TOOL_PARAMETER_FORM_FORM   ToolParameterForm = "form"
	TOOL_PARAMETER_FORM_LLM    ToolParameterForm = "llm"
)

type ToolParameterType

type ToolParameterType string
const (
	TOOL_PARAMETER_TYPE_STRING         ToolParameterType = STRING
	TOOL_PARAMETER_TYPE_NUMBER         ToolParameterType = NUMBER
	TOOL_PARAMETER_TYPE_BOOLEAN        ToolParameterType = BOOLEAN
	TOOL_PARAMETER_TYPE_SELECT         ToolParameterType = SELECT
	TOOL_PARAMETER_TYPE_SECRET_INPUT   ToolParameterType = SECRET_INPUT
	TOOL_PARAMETER_TYPE_FILE           ToolParameterType = FILE
	TOOL_PARAMETER_TYPE_FILES          ToolParameterType = FILES
	TOOL_PARAMETER_TYPE_APP_SELECTOR   ToolParameterType = APP_SELECTOR
	TOOL_PARAMETER_TYPE_MODEL_SELECTOR ToolParameterType = MODEL_SELECTOR
	// TOOL_PARAMETER_TYPE_TOOL_SELECTOR  ToolParameterType = TOOL_SELECTOR
	TOOL_PARAMETER_TYPE_ANY            ToolParameterType = ANY
	TOOL_PARAMETER_TYPE_DYNAMIC_SELECT ToolParameterType = DYNAMIC_SELECT
	TOOL_PARAMETER_ARRAY               ToolParameterType = ARRAY
	TOOL_PARAMETER_OBJECT              ToolParameterType = OBJECT
	TOOL_PARAMETER_TYPE_CHECKBOX       ToolParameterType = CHECKBOX
)

type ToolProviderDeclaration

type ToolProviderDeclaration struct {
	Identity          ToolProviderIdentity `json:"identity" yaml:"identity" validate:"required"`
	CredentialsSchema []ProviderConfig     `json:"credentials_schema" yaml:"credentials_schema" validate:"omitempty,dive"`
	OAuthSchema       *OAuthSchema         `json:"oauth_schema" yaml:"oauth_schema" validate:"omitempty"`
	Tools             []ToolDeclaration    `json:"tools" yaml:"tools" validate:"required,dive"`
	ToolFiles         []string             `json:"-" yaml:"-"`
}

func UnmarshalToolProviderDeclaration

func UnmarshalToolProviderDeclaration(data []byte) (*ToolProviderDeclaration, error)

func (*ToolProviderDeclaration) MarshalJSON

func (t *ToolProviderDeclaration) MarshalJSON() ([]byte, error)

func (*ToolProviderDeclaration) UnmarshalJSON

func (t *ToolProviderDeclaration) UnmarshalJSON(data []byte) error

func (*ToolProviderDeclaration) UnmarshalYAML

func (t *ToolProviderDeclaration) UnmarshalYAML(value *yaml.Node) error

type ToolProviderIdentity

type ToolProviderIdentity struct {
	Author      string                        `json:"author" validate:"required"`
	Name        string                        `json:"name" validate:"required,tool_provider_identity_name"`
	Description I18nObject                    `json:"description"`
	Icon        string                        `json:"icon" validate:"required"`
	IconDark    string                        `json:"icon_dark" yaml:"icon_dark" validate:"omitempty"`
	Label       I18nObject                    `json:"label" validate:"required"`
	Tags        []manifest_entities.PluginTag `json:"tags" validate:"omitempty,dive,plugin_tag"`
}

type ToolSelectorScope

type ToolSelectorScope string
const (
	TOOL_SELECTOR_SCOPE_ALL      ToolSelectorScope = "all"
	TOOL_SELECTOR_SCOPE_PLUGIN   ToolSelectorScope = "plugin"
	TOOL_SELECTOR_SCOPE_API      ToolSelectorScope = "api"
	TOOL_SELECTOR_SCOPE_WORKFLOW ToolSelectorScope = "workflow"
)

type TriggerProviderDeclaration

type TriggerProviderDeclaration struct {
	Identity                TriggerProviderIdentity  `json:"identity" yaml:"identity" validate:"required"`
	SubscriptionSchema      []ProviderConfig         `json:"subscription_schema" yaml:"subscription_schema" validate:"required"`
	SubscriptionConstructor *SubscriptionConstructor `json:"subscription_constructor" yaml:"subscription_constructor" validate:"omitempty"`
	Events                  []EventDeclaration       `json:"events" yaml:"events" validate:"omitempty,dive"`
	EventFiles              []string                 `json:"-" yaml:"-"`
}

TriggerProviderDeclaration represents the configuration of a trigger provider

func (*TriggerProviderDeclaration) MarshalJSON

func (t *TriggerProviderDeclaration) MarshalJSON() ([]byte, error)

MarshalJSON implements custom JSON marshalling for TriggerProviderConfiguration

func (*TriggerProviderDeclaration) UnmarshalYAML

func (t *TriggerProviderDeclaration) UnmarshalYAML(value *yaml.Node) error

UnmarshalYAML implements custom YAML unmarshalling for TriggerProviderConfiguration

type TriggerProviderIdentity

type TriggerProviderIdentity struct {
	Author      string                        `json:"author" validate:"required"`
	Name        string                        `json:"name" validate:"required,tool_provider_identity_name"`
	Description I18nObject                    `json:"description"`
	Icon        string                        `json:"icon" validate:"required"`
	IconDark    string                        `json:"icon_dark" yaml:"icon_dark" validate:"omitempty"`
	Label       I18nObject                    `json:"label" validate:"required"`
	Tags        []manifest_entities.PluginTag `json:"tags" validate:"omitempty,dive,plugin_tag"`
}

TriggerProviderIdentity represents the identity of the trigger provider

type TriggerRuntime

type TriggerRuntime struct {
	Credentials map[string]any `json:"credentials" yaml:"credentials"`
	SessionID   *string        `json:"session_id" yaml:"session_id"`
}

TriggerRuntime represents the runtime context for trigger execution

type Unsubscription

type Unsubscription struct {
	Success bool    `json:"success" yaml:"success" validate:"required"`
	Message *string `json:"message,omitempty" yaml:"message,omitempty"`
}

Unsubscription represents the result of a trigger unsubscription operation

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL