* 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>
* feat: add LLMStructuredOutput and LLMStructuredOutputInvocation for structured output handling
- Introduced LLMStructuredOutput model class for structured output representation.
- Added LLMStructuredOutputInvocation class to handle invocation with structured output.
- Updated ModelInvocations to include LLMStructuredOutputInvocation.
- Modified InvokeType enum to support LLMStructuredOutput type.
* docs: update README.md to include support for LLM structured output in manifest versioning
* feat(invocation): add FetchAppInvocation and update type hints for improved clarity
- Introduced FetchAppInvocation class to handle fetching app data.
- Updated type hints in ToolInvokeMessage and related classes to use Mapping for better type safety.
- Added FetchApp enum value to InvokeType for consistency in invocation types.
* apply ruff
* feat(python): Add specific error classes for StorageInvocation
Replace generic `Exception` raises with `NotFoundError` when the key is missing,
and `StorageInvocationError` for other response errors. This improves error
handling at call sites by avoiding overly generic exceptions.
# Conflicts:
# python/dify_plugin/invocations/storage.py
* test(python): Add test cases for `StorageInvocation`
- Ensure `StorageInvocation` raises the correct exceptions when data is missing
or `_backwards_invoke` returns an invalid response.
- Verify that `StorageInvocation` correctly processes the result returned
by `_backwards_invoke`.
* chore(python): fix linter violations
* feat(python): Change the exception `StorageInvocation.exist` raised
* test(python): Add test cases for `StorageInvocation.exist`.
* chore(python): temporarily disable `UP007` rule in Ruff
Disable the `UP007` rule temporarily due to numerous existing
violations in the current codebase.
* ci(python): add lint and test for Python SDK
* ci: Add mega-linter
* chore(python): Add final newline to markdown files
* fix(python): Fix linter issues by using ruff's auto fix
* fix(python): Fix TRY400 linter violations
Ruff suggests using `logger.exception` to log when
logging an exception, instead of using `logging.error`.
The former logs the exception and the traceback
automatically.
ref: https://docs.astral.sh/ruff/rules/error-instead-of-exception/
* fix(python): fix ruff linter violations
* test(python): Add Test cases for LLM entities
Test the initialization of `LLMResult` and `LLMResultChunk`.
* test(python): Add test for `AgentModelConfig`
Ensures that the `history_prompt_messages` attribute is
not shared between instances of `AgentModelConfig`.
* chore(python): output diffs in Ruff's format check
* style(python): format code with Ruff
* chore(python): Add a bash script for fix and format python code
* chore: add `persist-credentials: false` to checkout action
Enhances security by preventing subsequent
steps from accessing GitHub credentials, reducing
potential attack surfaces.
Ref: https://github.com/actions/checkout#checkout-v4
* refactor: remove prompt_messages from LLMResult and LLMResultChunk
* fix: add backward compatibility for deprecated prompt_messages field in LLMResult and LLMResultChunk
* fix: set default value for prompt_messages field to an empty list in LLMResult and LLMResultChunk for backward compatibility
* feat: add test for LLMResult to validate prompt_messages field and ensure backward compatibility
* apply ruff
* chore(python): update .gitignore for Python SDK
Adjust .gitignore for Python SDK based on the templated generated by
gitignore.io, with minor custom modifications.
* chore: add .editorconfig for consistent formatting
Add a .editorconfig file to enforce consistent file encoding,
indentation, and end-of-line characters across the project.
* chore(python): upgrade ruff version to v0.11.2
* feat(python): Integrate flake8-bandit ruleset for security linting
Enable the flake8-bandit (S) ruleset in ruff to enforce security-related
best practices and mitigate potential vulnerabilities in the codebase.
Suppress existing issues in the current code using `noqa` comments, primarily for
instances of `requests` calls without a specified `timeout` parameter.
* fix:Change the file upload check parameter type to an optional parameter.
* feat:UploadFileResponse add preview_url
* feat:UploadFileResponse add preview_url
* fix: UploadFileResponse to support optional type initialization from mime_type
* fix: validate type using model_validator
* refactor: remove unused import of Optional from file.py