plugin_entities

package
v0.0.0-...-e06565c Latest Latest
Warning

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

Go to latest
Published: Jun 22, 2025 License: Apache-2.0 Imports: 28 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"
)
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),
	infoHandler func(message string),
)

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,json_schema"`
	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      []ToolParameterOption      `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 {
	CredentialsSchema []ProviderConfig `json:"credentials_schema" yaml:"credentials_schema" validate:"omitempty,dive"`
	OAuthSchema       *OAuthSchema     `json:"oauth_schema" yaml:"oauth_schema" validate:"omitempty,dive"`
}

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 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"`

	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"`
	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"
)

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 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"
)

type PluginClusterLifetime

type PluginClusterLifetime interface {
	// stop the plugin
	Stop()
	// add a function to be called when the plugin stops
	OnStop(func())
	// trigger the stop event
	TriggerStop()
	// returns true if the plugin is stopped
	Stopped() bool
	// returns the runtime state of the plugin
	RuntimeState() PluginRuntimeState
	// Update the runtime state of the plugin
	UpdateScheduledAt(t time.Time)
}

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"`
}

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"`
	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"`
}

type PluginFullDuplexLifetime

type PluginFullDuplexLifetime interface {
	PluginLifetime

	// before the plugin starts, it will call this method to initialize the environment
	InitEnvironment() error
	// start the plugin, returns errors if the plugin fails to start and hangs until the plugin stops
	StartPlugin() error
	// wait for the plugin to stop
	Wait() (<-chan bool, 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)
	// add restarts to the plugin
	AddRestarts()
	// Started
	WaitStarted() <-chan bool
	// Stopped
	WaitStopped() <-chan bool
}

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"`
	// contains filtered or unexported fields
}

func (*PluginRuntime) AddRestarts

func (r *PluginRuntime) AddRestarts()

func (*PluginRuntime) Configuration

func (r *PluginRuntime) Configuration() *PluginDeclaration

func (*PluginRuntime) Error

func (s *PluginRuntime) Error(log string)

func (*PluginRuntime) HashedIdentity

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

func (*PluginRuntime) InitState

func (r *PluginRuntime) InitState()

func (*PluginRuntime) Log

func (s *PluginRuntime) Log(log string)

func (*PluginRuntime) OnStop

func (r *PluginRuntime) OnStop(f func())

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) TriggerStop

func (r *PluginRuntime) TriggerStop()

func (*PluginRuntime) UpdateScheduledAt

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

func (*PluginRuntime) Warn

func (s *PluginRuntime) Warn(log string)

type PluginRuntimeSessionIOInterface

type PluginRuntimeSessionIOInterface interface {
	PluginBasicInfoInterface

	// Listen listens for messages from the plugin
	Listen(session_id string) *entities.Broadcast[SessionMessage]
	// Write writes a message to the plugin
	Write(session_id string, action access_types.PluginAccessAction, data []byte)
	// Log adds a log to the plugin runtime state
	Log(string)
	// Warn adds a warning to the plugin runtime state
	Warn(string)
	// Error adds an error to the plugin runtime state
	Error(string)
}

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"`
	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_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 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" yaml:"output_schema" validate:"omitempty,json_schema"`
	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

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,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          []ToolParameterOption  `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 ToolParameterOption

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

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
)

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,dive"`
	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"`
	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"
)

Jump to

Keyboard shortcuts

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