mirror of
https://github.com/langgenius/dify-plugin-sdks.git
synced 2026-07-22 10:25:23 -04:00
132d6572ee
* feat: add dynamic select support - Introduced ParameterOption class for parameter options with value, label, and optional icon. - Updated ToolParameterOption to inherit from ParameterOption. - Added DYNAMIC_SELECT to CommonParameterType enum. - Implemented fetch_parameter_options method in Tool class for fetching parameter options. - Created DynamicSelectProtocol for dynamic select functionality. - Added tests for Tool construction and parameter options fetching. * feat: implement dynamic parameter fetching functionality - Added DynamicParameterFetchParameterOptionsRequest class for dynamic parameter requests. - Introduced DynamicParameterActions enum for action types related to dynamic parameters. - Enhanced PluginExecutor with methods to handle dynamic parameter fetching. - Updated Tool interface to include a method for fetching parameter options. - Documented the DynamicSelectProtocol for clarity on its usage. * feat: enhance plugin functionality with dynamic parameter options and trigger interface - Added dynamic parameter fetching capabilities to the Plugin class. - Introduced TriggerProvider and Trigger classes for managing trigger functionalities. - Updated Tool interface to enforce implementation of credential validation and OAuth methods. - Enhanced error messages for NotImplementedError in ToolProvider and Trigger classes. - Removed deprecated tools and their configurations from the codebase. * docs: update README.md to include support for `dynamic-select` parameter type in manifest versioning * chore: remove code_based_workflow
22 lines
720 B
Python
22 lines
720 B
Python
from typing import Protocol
|
|
|
|
from dify_plugin.entities import ParameterOption
|
|
|
|
|
|
class DynamicSelectProtocol(Protocol):
|
|
def fetch_parameter_options(self, parameter: str) -> list[ParameterOption]:
|
|
"""
|
|
Fetch the parameter options.
|
|
|
|
Classes that implement this protocol should have at least one parameter with type `dynamic-select`.
|
|
|
|
At some scenarios, we don't know the available options,
|
|
it could not be defined in the plugin directly.
|
|
|
|
But we can fetch the options from the external service such as Slack,
|
|
by providing the access token of the user, we could fetch the channel list of the user.
|
|
|
|
That's what this protocol is for.
|
|
"""
|
|
...
|