Commit Graph

381 Commits

Author SHA1 Message Date
Yeuoly e380493e25 Bump to 0.2.4 (#143) 2025-05-14 13:07:18 +08:00
Yeuoly 5078f9d390 fix: update DifyPluginEnv to set default for REMOTE_INSTALL_URL (#142)
* feat: update DifyPluginEnv to set default for REMOTE_INSTALL_URL and add unit tests for environment configurations

- Set default value of REMOTE_INSTALL_URL to None in DifyPluginEnv.
- Introduced unit tests for various installation methods including local, remote, and serverless configurations, ensuring proper functionality without parameters and with specific settings.

* fix: update condition for install_url check in Plugin class

- Changed the condition to explicitly check for None instead of a truthy value, improving clarity and preventing potential issues with falsy values.

* apply ruff
2025-05-14 13:03:39 +08:00
Will 371bbbfc94 fix REMOTE_INSTALL_URL, need default value (#141) 2025-05-14 13:01:06 +08:00
Yeuoly ddb87f8605 Bump sdk to 0.2.3 (#139) 2025-05-13 15:46:31 +08:00
Bowen Liang 9353164ddb feat: support REMOTE_INSTALL_URL config for remote installing and debugging (#136)
* support REMOTE_INSTALL_URL

* nit

* nit

* passing remote_install_host and remote_install_port to TCPReaderWriter

* fix the host and port parsing approach without yarl

* extract method for parsing the host and port

* nit

* nit

* nit

* nit

* improve _get_remote_install_host_and_port method

* fix style

* fix style
2025-05-13 15:42:54 +08:00
Bowen Liang 08c596d077 httpx~=0.28.1 (#137) 2025-05-12 14:45:55 +08:00
Yeuoly dbcb96ba61 feat: add repository URL field to manifest (#134)
- Introduced an optional `repo` field in the `PluginConfiguration` class to store the repository URL of the plugin, enhancing the configuration capabilities.
2025-05-07 18:35:41 +08:00
Yeuoly 3033f3e6c2 chore: add unit test for AgentStrategy constructor (#133)
* feat: add unit test for AgentStrategy constructor

- Introduced a new test to validate the constructor of the AgentStrategy class, ensuring it is not overridden.
- Created an implementation of AgentStrategy for testing purposes, confirming that the constructor behaves as expected.
- Utilized ThreadPoolExecutor and session management to facilitate the test setup.

* fix: apply ruff

* fix: correct argument order in AgentStrategyImpl instantiation in test
2025-05-07 13:52:33 +08:00
Yeuoly 5f517df4f5 feat: mark constructors as final in multiple classes (#132)
- Added `@final` decorator to the constructors of `AgentStrategy`, `Endpoint`, `AIModel`, and `Tool` classes to prevent overriding.
- Included documentation notes in each constructor to indicate that they should not be overridden.
2025-05-07 13:22:20 +08:00
Yeuoly 50a8b90223 Bump to 0.2.2 (#131) 2025-05-06 16:39:38 +08:00
kurokobo c61fa1282a fix: improve buffer handling for multimodal input (#128)
* fix: improve buffer handling

* tests:add tests for StdioRequestReader

- Introduced a new private method `_read_async` to handle asynchronous reading from stdin.
- Updated `_read_stream` to utilize the new `_read_async` method for improved code clarity and maintainability.
- Added a new test file `test_stdio.py` to validate the functionality of the StdioRequestReader, ensuring correct handling of input data streams.

* fix: remove useless code

* fix: handle empty lines in StdioRequestReader

- Updated the StdioRequestReader to strip and skip empty lines during input processing.
- Added a new test to validate the handling of empty lines, ensuring the reader correctly processes a stream with mixed content.

* apply ruff

---------

Co-authored-by: Yeuoly <admin@srmxy.cn>
2025-05-06 16:37:41 +08:00
Yeuoly e4b0d5a181 feat(endpoint): support declare endpoints in groups (#130)
- Introduced a class method `_load_yaml_file` to encapsulate YAML file loading logic.
- Enhanced the `validate_endpoints` method to support both direct endpoint configurations and YAML file paths.
- Added unit tests for loading endpoint configurations from YAML strings and files.
2025-05-06 15:57:32 +08:00
Tianyi Jing 931e4d1485 feat: support list in ToolInvokeMessage.JsonMessage (#122)
Signed-off-by: jingfelix <jingfelix@outlook.com>
2025-05-06 15:54:47 +08:00
Darlewo a35cb4c5e6 fix: remove unnecessary locking in _recv_from_sock method (#125) 2025-04-30 15:40:48 +08:00
Kalo Chin d8f9286eb3 fix(File): enhance error handling for unsupported URL protocols in file retrieval (#124)
- Added exception handling for unsupported protocols in the `get_blob` method.
- Raises a ValueError with a clear message if the URL is invalid, guiding users to check the `FILES_URL` environment variable.
- Maintained existing functionality while improving robustness against HTTP request failures.
2025-04-30 15:34:25 +08:00
Yeuoly 038edf957e feat: generate docs automatically (#121)
- Added CLI for generating documentation with `generate-docs` command.
- Introduced `SchemaDocumentationGenerator` to create structured documentation from schemas.
- Implemented `SchemaDoc` class for schema metadata and documentation management.
- Updated `PluginConfiguration` to include descriptions for plugin components.
- Added support for outside reference fields in the SchemaDocumentationGenerator to improve documentation clarity.
- Updated SchemaDoc to include outside_reference_fields parameter.
- Modified various entity classes to utilize outside_reference_fields for better schema representation.
- Introduced new container type checks and helper methods for handling dynamic fields in documentation generation.
2025-04-30 14:48:03 +08:00
Kollin bed0cc106c agent node add runtime(user_id) (#115)
* agent node add runtime(user_id)

* add optional for user_id
2025-04-27 16:46:56 +08:00
Yeuoly 29a15ccdd7 feat(http_parser): add functions to parse raw HTTP requests and conve… (#119)
* feat(http_parser): add functions to parse raw HTTP requests and convert Request objects to raw data

- Implemented `parse_raw_request` to convert raw HTTP data into a Request object, including support for headers and body.
- Added `convert_request_to_raw_data` to transform a Request object back into raw HTTP data.
- Created unit tests for both functions to ensure correct parsing and conversion behavior.

* apply ruff
2025-04-27 15:02:42 +08:00
cirtron 64ee98d533 Update README.md to new version (#118) 2025-04-27 15:01:26 +08:00
Chieh Wang 293d622e68 feat: Add Citations and Attributions to Agent Node (#107)
* feat: support var-selector params & surpport retriever_resources messsage

* opt: rename var-select to any

* fix: line too long

* opt: Add RetrieverResource Type
2025-04-27 13:54:22 +08:00
Yeuoly 2c208ebe23 fix: update storage field to be optional in PluginResourceRequirements class (#114) 2025-04-25 15:29:17 +08:00
Yeuoly c278653d49 chore: bump version to 0.2.1 (#112) 2025-04-25 14:15:24 +08:00
Yeuoly f14a1f9416 fix: update minimum_dify_version to be optional in PluginConfiguration (#111)
- Changed minimum_dify_version from required to optional in PluginConfiguration.
- Added unit tests to verify behavior when minimum_dify_version is not provided.
2025-04-25 14:15:09 +08:00
Chieh Wang bfbf7ced91 fix: ignore abnormal chunk (#109) 2025-04-25 14:12:38 +08:00
Vitor a39ec2c948 fix: incorrectly uses new_tool_call.function.name while getting existing tool calls (#104) 2025-04-25 14:00:23 +08:00
Yeuoly b884686d5e chore: bump version to 0.2.0 (#110) 2025-04-25 13:58:29 +08:00
Chieh Wang 8b63710a06 fix: debug mode cannot get app_id (#106) 2025-04-25 13:51:21 +08:00
Yeuoly 9c324aab14 optimize: replace json.loads with TypeAdapter for JSON unmarshaling (#103)
* refactor: replace json.loads with TypeAdapter for JSON validation in request readers and model

- Updated JSON parsing in BackwardsInvocation, StdioRequestReader, and TCPReaderWriter to use TypeAdapter for improved validation.
- Enhanced error handling in OAICompatLargeLanguageModel by replacing json.loads with TypeAdapter, ensuring better compliance with expected JSON schema.

* fix: linter
2025-04-17 16:31:40 +08:00
Junjie.M f714fc9bf7 feat: agent strategy parameter add help field (#99) 2025-04-17 14:00:32 +08:00
Yeuoly ca736effd7 feat(invocation): add FetchAppInvocation and update type hints for improved clarity (#100)
* 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
2025-04-16 20:25:39 +08:00
Novice 0690573a87 feat(model): add structured output feature to model 2025-04-16 08:59:06 +08:00
QuantumGhost 182828657b feat(python): Add specific error classes for StorageInvocation (#90)
* 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`.
2025-04-15 14:51:43 +08:00
Novice e2447622a8 feat(model): add structured output feature to model 2025-04-15 14:00:27 +08:00
Novice 9cc8f27102 chore: fix ruff issue 2025-04-15 13:34:25 +08:00
Novice aa71d8dc12 fix(agent_node): support tool parameters of select type 2025-04-15 13:24:55 +08:00
QuantumGhost 5cb24625c3 ci(python): Add CI Pipeline for Python SDK (#72)
* 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
2025-04-14 20:25:19 +08:00
非法操作 bc4ee91294 add self.session.storage.exist (#89) 2025-04-14 20:05:33 +08:00
Yeuoly 0d47adb19f feat: add minimum_dify_version field to PluginConfiguration for version validation (#93) 2025-04-14 20:04:43 +08:00
Yeuoly 12ad9db9b5 enhancement: remove prompt_messages from LLMResult and LLMResultChunk (#88)
* 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
2025-04-11 15:23:05 +08:00
晴天娃娃 94e36a4e48 Fix: Convert shared class variables to instance variables in RequestReader to solve lock contention and CPU deadlock issues (#81) 2025-04-11 15:20:35 +08:00
Yeuoly 3976439a6d Update README.md 2025-04-11 13:29:16 +08:00
Yeuoly 8310e77533 chore: update Python SDK version to 0.1.0 and add README for Dify Plugin SDK 2025-04-10 14:56:55 +08:00
Yeuoly f42fd51aed docs: add README for Dify Plugin SDK with version management guidelines 2025-04-10 14:52:33 +08:00
Vitor 6860f207c2 fix: ensure string fields in ToolCall default to empty string during initialization if set to explicit None (#82) 2025-04-10 14:45:39 +08:00
Yeuoly 957aab49cd fix: improve gevent socket connection handling, avoid blocking except… (#86)
* fix: improve gevent socket connection handling, avoid blocking exceptions

* fix: enhance TCP socket handling with thread safety and improved data transmission
2025-04-10 13:42:35 +08:00
3Dify-developer 579f26f67a chore: update pydantic-settings version to >=2.5.0 (#80)
* chore: update pydantic-settings version to >=2.5.0

* chore: limit pydantic-settings < v3.0.0
2025-04-09 20:09:47 +08:00
Junyan Qin (Chin) 0216ed8187 feat: add supports for provider to register array[tool] type field (#78) 2025-04-07 16:14:36 +08:00
helojo 996ca2af6c socket recv cache up to 1M (#75)
Co-authored-by: zqgame <zqgame@zqgame.local>
2025-04-07 11:14:52 +09:00
呆萌闷油瓶 ecbb098877 chore:sync openai_compatible/llm.py from 0.15.3 (#71)
* sync from 0.15.3

* fix conflict

* fix conflict
2025-04-01 01:26:01 +09:00
Yeuoly 46cc404d2e fix: bump sdk version to beta76 2025-03-29 01:55:53 +09:00