Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions pkg/entities/plugin_entities/agent_declaration.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,9 @@ const (
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
AGENT_STRATEGY_PARAMETER_TYPE_TOOLS_SELECTOR AgentStrategyParameterType = TOOLS_SELECTOR
AGENT_STRATEGY_PARAMETER_TYPE_ANY AgentStrategyParameterType = ANY
AGENT_STRATEGY_PARAMETER_TYPE_DYNAMIC_TREE_SELECT AgentStrategyParameterType = DYNAMIC_TREE_SELECT
)

func isAgentStrategyParameterType(fl validator.FieldLevel) bool {
Expand All @@ -47,7 +48,8 @@ func isAgentStrategyParameterType(fl validator.FieldLevel) bool {
string(AGENT_STRATEGY_PARAMETER_TYPE_APP_SELECTOR),
string(AGENT_STRATEGY_PARAMETER_TYPE_MODEL_SELECTOR),
string(AGENT_STRATEGY_PARAMETER_TYPE_TOOLS_SELECTOR),
string(AGENT_STRATEGY_PARAMETER_TYPE_ANY):
string(AGENT_STRATEGY_PARAMETER_TYPE_ANY),
string(AGENT_STRATEGY_PARAMETER_TYPE_DYNAMIC_TREE_SELECT):
return true
}
return false
Expand Down
12 changes: 7 additions & 5 deletions pkg/entities/plugin_entities/constant.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,16 @@ const (
TOOLS_SELECTOR = "array[tools]"
ANY = "any"
// DynamicSelect
DYNAMIC_SELECT = "dynamic-select"
ARRAY = "array"
DYNAMIC_SELECT = "dynamic-select"
DYNAMIC_TREE_SELECT = "dynamic-tree-select"
ARRAY = "array"
OBJECT = "object"
CHECKBOX = "checkbox"
)

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"`
Value string `json:"value" yaml:"value" validate:"required"`
Label I18nObject `json:"label" yaml:"label" validate:"required"`
Icon string `json:"icon" yaml:"icon" validate:"omitempty"`
Children []ParameterOption `json:"children,omitempty" yaml:"children,omitempty" validate:"omitempty,dive"`
}
45 changes: 24 additions & 21 deletions pkg/entities/plugin_entities/tool_declaration.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,12 @@ const (
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
TOOL_PARAMETER_TYPE_ANY ToolParameterType = ANY
TOOL_PARAMETER_TYPE_DYNAMIC_SELECT ToolParameterType = DYNAMIC_SELECT
TOOL_PARAMETER_TYPE_DYNAMIC_TREE_SELECT ToolParameterType = DYNAMIC_TREE_SELECT
TOOL_PARAMETER_ARRAY ToolParameterType = ARRAY
TOOL_PARAMETER_OBJECT ToolParameterType = OBJECT
TOOL_PARAMETER_TYPE_CHECKBOX ToolParameterType = CHECKBOX
)

func isToolParameterType(fl validator.FieldLevel) bool {
Expand All @@ -67,6 +68,7 @@ func isToolParameterType(fl validator.FieldLevel) bool {
string(TOOL_PARAMETER_TYPE_MODEL_SELECTOR),
string(TOOL_PARAMETER_TYPE_ANY),
string(TOOL_PARAMETER_TYPE_DYNAMIC_SELECT),
string(TOOL_PARAMETER_TYPE_DYNAMIC_TREE_SELECT),
string(TOOL_PARAMETER_ARRAY),
string(TOOL_PARAMETER_OBJECT),
string(TOOL_PARAMETER_TYPE_CHECKBOX):
Expand Down Expand Up @@ -122,22 +124,23 @@ type ParameterTemplate struct {
}

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"`
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"`
DynamicSelectLazyLoad bool `json:"dynamic_select_lazy_load,omitempty" yaml:"dynamic_select_lazy_load,omitempty" validate:"omitempty"`
}

type ToolDescription struct {
Expand Down
6 changes: 4 additions & 2 deletions pkg/entities/plugin_entities/trigger_declaration.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,9 @@ const (
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
EVENT_PARAMETER_TYPE_DYNAMIC_SELECT EventParameterType = DYNAMIC_SELECT
EVENT_PARAMETER_TYPE_DYNAMIC_TREE_SELECT EventParameterType = DYNAMIC_TREE_SELECT
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The dynamic-tree-select parameter type is being added to triggers, but the EventParameterOption struct (defined earlier in this file and used by EventParameter.Options) has not been updated to include a Children field. This is inconsistent with the changes made to ParameterOption in constant.go, which now supports hierarchy for tools and agent strategies. To ensure triggers can also support hierarchical options in their declarations, EventParameterOption should be updated to include a recursive Children field.

EVENT_PARAMETER_TYPE_CHECKBOX EventParameterType = CHECKBOX
)

func isEventParameterType(fl validator.FieldLevel) bool {
Expand All @@ -55,6 +56,7 @@ func isEventParameterType(fl validator.FieldLevel) bool {
string(EVENT_PARAMETER_TYPE_OBJECT),
string(EVENT_PARAMETER_TYPE_ARRAY),
string(EVENT_PARAMETER_TYPE_DYNAMIC_SELECT),
string(EVENT_PARAMETER_TYPE_DYNAMIC_TREE_SELECT),
string(EVENT_PARAMETER_TYPE_CHECKBOX):
return true
}
Expand Down
12 changes: 7 additions & 5 deletions pkg/entities/requests/dynamic_select.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package requests

type RequestDynamicParameterSelect struct {
Credentials map[string]any `json:"credentials" validate:"required"`
CredentialType string `json:"credential_type,omitempty" validate:"omitempty"`
Provider string `json:"provider" validate:"required"`
ProviderAction string `json:"provider_action" validate:"required"`
Parameter string `json:"parameter" validate:"required"`
Credentials map[string]any `json:"credentials" validate:"required"`
CredentialType string `json:"credential_type,omitempty" validate:"omitempty"`
Provider string `json:"provider" validate:"required"`
ProviderAction string `json:"provider_action" validate:"required"`
Parameter string `json:"parameter" validate:"required"`
Parent *string `json:"parent,omitempty" validate:"omitempty"`
ParameterValues map[string]any `json:"parameter_values,omitempty" validate:"omitempty"`
}