Files
dify-plugin-sdks/python/dify_plugin/config/integration_config.py
Maries c6f83a63e1 feat[0.4.2]: Tool OAuth (#179)
* chore: fix ruff issue

* feat(oauth): implement OAuth

* feat(invoke-message): refactor message handling and introduce InvokeMessage class

* feat(plugin-oauth): add credential_id and credential_type to tool parameters

* feat(plugin-oauth): add credential_id and credential_type to tool parameters

* chore: update dify_plugin version to 0.5.0b4 and clean up github.yaml

* chore: update plugin version to 0.1.2 in manifest.yaml

* feat(session): session context and tool backwards invocation credential support

* feat(oauth): session context and tool backwards invocation credential support

* feat: update README and requirements for OAuth support in version 0.4.2

* feat: add .gitignore to exclude IDE files and secret keys

* chore: apply ruff

* feat: bump version to 0.4.2b1

* feat: update GitHub plugin configuration for OAuth support and improve credential handling

* feat: update .gitignore to exclude dify plugin files and public keys

* feat: fix credential validation for GitHub API and bump version to 0.2.1

* feat: update GitHub plugin to support multiple access tokens and bump version to 0.2.5

* chore: apply ruff

* feat: add ToolProviderOAuthError for improved OAuth error handling in GitHub plugin

* chore: apply ruff

* chore: bump version to 0.4.2

* chore: update examples sdk version to 0.4.2

* fix: thread deadlock in PluginRunner when running tests without gevent monkey patching

* feat: add support for refreshing OAuth credentials in Plugin and GitHub provider

* feat: refactor OAuth credential handling to return structured OAuthCredentials object

* apply ruff

* feat: refactor OAuth credential handling to use ToolOAuthCredentials for improved structure

* feat: reorganize imports in __init__.py for improved clarity and structure

* feat: add Microsoft To Do plugin for refresh token example

* chore: apply ruff

* fix: update author in GitHub configuration and clean up Microsoft To Do schema

* chore: bump version to 0.4.2b2 in pyproject.toml

* feat: update Microsoft To Do plugin to handle OAuth token encoding and version bump

* feat:remove inelegant example

* chore: update dify_plugin version to 0.4.2

* chore: bump version to 0.4.2 in pyproject.toml

---------

Co-authored-by: Yeuoly <admin@srmxy.cn>
2025-07-23 13:49:01 +08:00

56 lines
1.5 KiB
Python

"""
This file is used to hold the integration config for plugin testing.
"""
import shutil
import subprocess
from packaging.version import Version
from pydantic import Field, field_validator
from pydantic_settings import BaseSettings, SettingsConfigDict
_PLUGIN_NAMES = [
"dify",
"dify.exe",
"dify-plugin",
"dify-plugin.exe",
"dify-plugin-darwin-amd64",
"dify-plugin-darwin-arm64",
"dify-plugin-linux-amd64",
"dify-plugin-linux-arm64",
"dify-plugin-windows-amd64.exe",
"dify-plugin-windows-arm64.exe",
]
class IntegrationConfig(BaseSettings):
dify_cli_path: str = Field(default="", description="The path to the dify cli")
@field_validator("dify_cli_path")
@classmethod
def validate_dify_cli_path(cls, v):
# find the dify cli path
if not v:
for plugin_name in _PLUGIN_NAMES:
v = shutil.which(plugin_name)
if v:
break
if not v:
raise ValueError("dify cli not found")
# check dify version
version = subprocess.check_output([v, "version"]).decode("utf-8") # noqa: S603
try:
version = Version(version)
except Exception as e:
raise ValueError("dify cli version is not valid") from e
if version < Version("0.1.0"):
raise ValueError("dify cli version must be greater than 0.1.0 to support plugin run")
return v
model_config = SettingsConfigDict(env_file=".env", extra="allow")