Update si_wei_dao_tu_sheng_cheng_qi to v0.0.19 - #2763
Conversation
Add the canonical 0.0.19 Marketplace package as a publication-recovery release for langgenius#2755. The validated 0.0.18 runtime is unchanged. The package increments the release version and updates the English and Simplified Chinese release notes. The filename contains no browser duplicate suffix.
crazywoola
left a comment
There was a problem hiding this comment.
❌ Request Changes
Decision: Request changes
Failed Checks
| Check | Status | Detail | Required action |
|---|---|---|---|
Install test |
❌ Fail | Command failed (1): /var/folders/c5/ssq8b54n0rj6rbmghy7_2xdm0000gn/T/pr-review-helper-f0uj7tx3/.venv/bin/python /var/folders/c5/ssq8b54n0rj6rbmghy7_2xdm0000gn/T/pr-review-helper-f0uj7tx3/toolkit/validator/test-plugin-install.py -d /var/folders/c5/ssq8b54n0rj6… | Fix the plugin so test-plugin-install.py passes. |
Full Check Results
| Check | Status | Detail | Required action |
|---|---|---|---|
PR content language |
✅ Pass | PR title/body CJK ratio=0.0% (zh=0, en=6637, ignored_zh=0, allowed_zh<=0) | None. |
Project structure |
✅ Pass | All expected files present: manifest.yaml, README.md, PRIVACY.md. _assets/: yes. | None. |
Manifest author |
✅ Pass | author is valid. | None. |
Icon validation |
✅ Pass | icon exists: _assets/icon.png | None. |
Version check |
✅ Pass | version 0.0.19 is available. | None. |
README language |
✅ Pass | README.md CJK ratio=0.0% (zh=0, en=14525, allowed_zh<=0) | None. |
PRIVACY.md |
✅ Pass | PRIVACY.md exists and is non-empty. | None. |
Dependency install |
✅ Pass | requirements installed successfully. | None. |
dify_plugin version |
✅ Pass | dify_plugin version 0.10.0 satisfies >= 0.9.0. | None. |
Install test |
❌ Fail | Command failed (1): /var/folders/c5/ssq8b54n0rj6rbmghy7_2xdm0000gn/T/pr-review-helper-f0uj7tx3/.venv/bin/python /var/folders/c5/ssq8b54n0rj6rbmghy7_2xdm0000gn/T/pr-review-helper-f0uj7tx3/toolkit/validator/test-plugin-install.py -d /var/folders/c5/ssq8b54n0rj6… | Fix the plugin so test-plugin-install.py passes. |
Packaging test |
✅ Pass | packaging check passed. | None. |
Next steps
- Install test: Fix the plugin so test-plugin-install.py passes.
Please address these issues and push an update.
fix: add bounded startup compatibility to mind map 0.0.19 Replace the 0.0.19 package with the corrected same-name artifact. The launcher preserves every explicit Dify SDK install mode and selects serverless only for a direct, unconfigured launch whose stdin is conclusively unavailable, or when serverless host/port settings already express that intent. Rendering and tool behavior remain unchanged.
|
Thank you for reporting the Install test failure. I investigated the complete startup path and directly replaced the existing 0.0.19 artifact at the same repository path, filename, and version. The PR still changes exactly one Marketplace file; no second package or new version was added. The replacement branch head has now passed the repository's latest https://github.com/langgenius/dify-plugins/actions/runs/30345554398 Background and diagnosisThe previously uploaded 0.0.19 artifact had also passed the repository's earlier automated validation: https://github.com/langgenius/dify-plugins/actions/runs/30062839387/job/89387762755 In the review-helper result, dependency installation passed, The observed discrepancy was associated with the direct plugin-launch context used by the review helper, which differs from the normal Dify daemon launch context. Dify's normal local runtime starts the plugin as a subprocess and communicates with it through a live STDIN/STDOUT transport. A serverless runtime instead exposes the HTTP endpoint expected by the validator's Flask-readiness and port-8080 probe: https://github.com/langgenius/dify-plugin-daemon In the failed review context, the plugin entry point could be started without an explicit install method while inheriting stdin that was detached, mapped to the operating system's null device, or already closed at EOF. Under that combination, the SDK's default local path has no usable daemon request transport even though the validator expects the serverless HTTP readiness state. This explains why dependency, SDK-version, structure, privacy, language, and packaging checks could pass while the Install test alone failed before any renderer or tool invocation occurred. The published review result truncated the child-process diagnostics, so it did not include the complete child stderr. The correction therefore addresses the reproducible missing-mode and unavailable-stdin boundary while preserving every explicitly configured Dify runtime path. Bounded correctionThe launcher now selects SDK serverless mode only when all of the following conditions apply:
Stdin is treated as conclusively unusable only when it is missing, closed, has an invalid descriptor, resolves to the operating system's null device, or is a pipe reporting HUP, ERR, or NVAL without readable data. Readable input takes precedence over a hangup event. Live pipes, readable disconnected pipes, terminals, ordinary files, streams without descriptors, and ambiguous states remain on the SDK's original path. Every explicit local, remote, and serverless mode is preserved, including case-insensitive environment-key spellings. Existing The guard does not read or consume stdin, change descriptor flags, mutate As a result, Dify's normal local daemon path is unchanged because it supplies a live STDIN/STDOUT transport. Explicit remote and serverless configurations are likewise unchanged. Change isolation and validationRelative to the superseded 0.0.19 artifact, only these three package members changed:
All other 28 package members are byte-identical, including the renderer, provider, tool implementation and schema, parameters, defaults, requirements, fonts, licenses, notices, assets, and privacy file. Validation of the corrected package includes:
Corrected artifact:
Superseded artifact:
Review-helper reproducibility suggestionsThe corrected package now supports the direct missing-mode launch observed during review. Separately, the following optional adjustments could make future Install test executions more deterministic and make the helper's result directly comparable with the repository's automated validation:
These are reproducibility suggestions only. The replacement package does not depend on a review-helper change and has passed the current direct-launch validator behavior. Could you please rerun the Install test and review the replacement artifact? If it still exits before the Flask readiness banner, please share the complete child-process stderr so the remaining failure stage can be identified precisely. |
|
@crazywoola The requested compatibility fix for the Install test has now been applied to the existing 0.0.19 package and uploaded in place under the same canonical path. The PR still changes exactly one The latest Current head commit: I have also updated the PR description and documented the full diagnosis, bounded startup compatibility change, validation results, and artifact hashes in my preceding comment. Could you please rerun the review helper and review the updated package again when convenient? Thank you. |
crazywoola
left a comment
There was a problem hiding this comment.
❌ Request Changes
Decision: Request changes
Failed Checks
| Check | Status | Detail | Required action |
|---|---|---|---|
Install test |
❌ Fail | Command failed (1): /var/folders/c5/ssq8b54n0rj6rbmghy7_2xdm0000gn/T/pr-review-helper-igcfwodm/.venv/bin/python /var/folders/c5/ssq8b54n0rj6rbmghy7_2xdm0000gn/T/pr-review-helper-igcfwodm/toolkit/validator/test-plugin-install.py -d /var/folders/c5/ssq8b54n0rj6… | Fix the plugin so test-plugin-install.py passes. |
Full Check Results
| Check | Status | Detail | Required action |
|---|---|---|---|
PR content language |
✅ Pass | PR title/body CJK ratio=0.0% (zh=0, en=10553, ignored_zh=0, allowed_zh<=0) | None. |
Project structure |
✅ Pass | All expected files present: manifest.yaml, README.md, PRIVACY.md. _assets/: yes. | None. |
Manifest author |
✅ Pass | author is valid. | None. |
Icon validation |
✅ Pass | icon exists: _assets/icon.png | None. |
Version check |
✅ Pass | version 0.0.19 is available. | None. |
README language |
✅ Pass | README.md CJK ratio=0.0% (zh=0, en=14921, allowed_zh<=0) | None. |
PRIVACY.md |
✅ Pass | PRIVACY.md exists and is non-empty. | None. |
Dependency install |
✅ Pass | requirements installed successfully. | None. |
dify_plugin version |
✅ Pass | dify_plugin version 0.10.0 satisfies >= 0.9.0. | None. |
Install test |
❌ Fail | Command failed (1): /var/folders/c5/ssq8b54n0rj6rbmghy7_2xdm0000gn/T/pr-review-helper-igcfwodm/.venv/bin/python /var/folders/c5/ssq8b54n0rj6rbmghy7_2xdm0000gn/T/pr-review-helper-igcfwodm/toolkit/validator/test-plugin-install.py -d /var/folders/c5/ssq8b54n0rj6… | Fix the plugin so test-plugin-install.py passes. |
Packaging test |
✅ Pass | packaging check passed. | None. |
Next steps
- Install test: Fix the plugin so test-plugin-install.py passes.
Please address these issues and push an update.
Plugin Submission
Plugin information
.difypkg)Submission type
Release background
Version 0.0.19 is a publication-recovery release for the 0.0.18 artifact merged in #2755.
Version 0.0.18 passed its pre-merge review and automated plugin checks. However, its merged repository filename retained a browser-generated duplicate suffix,
(3). The post-merge workflow interpolated that path into an unquoted shell command, causing Bash to stop at the opening parenthesis before Python or the Marketplace uploader started. The plugin package itself was not rejected by the Marketplace.The initial 0.0.19 artifact therefore preserved the validated 0.0.18 runtime while restoring a canonical, shell-safe package filename.
During the review of #2763, the reviewer reported an Install test failure from a macOS temporary review-helper environment. Dependency installation, the
dify_pluginversion check, package structure, README language, privacy validation, and the packaging test all passed. The repository's automated check also passed for the original artifact, indicating that the discrepancy was isolated to the direct plugin-launch context used by the review helper.This revision directly replaces the previously uploaded 0.0.19 artifact at the same repository path, filename, and version. It adds a bounded startup compatibility layer for that direct-launch context without changing the plugin's rendering or tool behavior.
What changed
Version 0.0.19 now includes the following:
zhangyu-si_wei_dao_tu_sheng_cheng_qi_0.0.19.difypkg, with no whitespace, parentheses, or browser duplicate suffix.INSTALL_METHODand no.envexist.SERVERLESS_HOSTorSERVERLESS_PORTalready indicates serverless intent, or stdin is conclusively unable to carry Dify's local protocol..envexists or stdin is a live pipe, a readable disconnected pipe, a terminal, an ordinary file, an in-memory stream without a descriptor, or an otherwise ambiguous stream.os.environ, inspect environment values, read.envcontents, install dependencies, create a second transport, or emit environment information.Compatibility boundary
The serverless fallback is selected only when all of the following conditions apply:
INSTALL_METHODis present..envpath exists, including a broken symbolic link that still indicates configuration intent.Stdin is considered conclusively unusable only when it is missing, closed, has an invalid descriptor, resolves to the operating system's null device, or is a pipe reporting HUP, ERR, or NVAL without readable data.
Readable data always takes precedence over a hangup event, ensuring that pending Dify protocol input is preserved.
Dify's normal local daemon starts the plugin as a subprocess and supplies a live STDIN/STDOUT transport. That path remains unchanged. Explicit remote and serverless configurations also remain unchanged.
Risk level
The correction is isolated to startup-mode selection in
main.py. It is unreachable when Dify supplies an explicit install mode or a configured local stdin transport. The renderer, provider, tools, schemas, parameters, dependencies, fonts, and output implementation were not modified.Required checks
PRIVACY.mdis present and referenced bymanifest.yaml.Security and privacy notes
No sensitive capability is introduced.
The plugin parses Markdown and renders images locally inside the Dify plugin runtime. It makes no external network requests and does not execute user-controlled code or commands, run SQL, access a database, use SSH or SFTP, automate a browser, proxy or crawl URLs, or read user-selected filesystem paths.
The compatibility guard inspects only environment-key names,
.envpath presence, and non-consuming stdin descriptor metadata and readiness. It does not inspect environment values, consume stdin bytes, modify the process environment, install dependencies, or emit new diagnostics.No credential is required. User content is not retained or sent to a third party.
Local validation
v0.6.6, built from official release commitde244f79c033a92bd308a2f34b38efd15ee5911f.56,212,980bytes with SHA-2561193fff00a1453b7b3b92ae76ff727760bd1aea9e28834e7a43bac602a0ff011.15,583,844bytes.15,728,640bytes.144,796bytes.1af04b50d83c42a4a3df19fe926ad87a1baf6d804f9bd5fb9d5b1e8d12c818c8.22,156,420bytes across 31 members.27,843,580bytes below the strict50,000,000-byte project limit.fonts/zhuque_fangsong.ttf(8,684,964bytes).9e7b8a29d1b07bfef10123ed47d6ccb0a0f748156b9dda9fb25cda4f1b415465.main.pySHA-256:bda76861eaab8d5e9874894d4b1808f2aeea5b2c1947270903ea260911a87160.7074eab1a67c648cbf67d46405293786b95411cd821e9a8232ecd0bd787f05b4.__pycache__,.pyc, log,.env, IDE file, secret, or bundled executable.author=zhangyu,name=si_wei_dao_tu_sheng_cheng_qi, pluginversion=0.0.19, manifest schemameta.version=0.0.2, Python runner3.12, and non-emptyprivacy: PRIVACY.md.dify_plugin>=0.9.0; no dependency was added or loosened.README.mdcontains zero Han, Hiragana, Katakana, or Hangul characters. Simplified Chinese remains isolated inreadme/README_zh_Hans.md.Change isolation and non-interference validation
Relative to the previously uploaded 0.0.19 artifact, only the following package members changed:
main.pyREADME.mdreadme/README_zh_Hans.mdThe other 28 package members are byte-identical, including:
The bounded startup decision and non-interference suite passed 23/23 cases, including:
.envpaths and broken.envsymbolic links./dev/null, invalid descriptors, and empty EOF pipes.The tests confirmed that the compatibility guard changed no input bytes, file-descriptor flags, environment entries, stdout, or stderr.
Startup and official validator validation
3.12.13with bothdify-plugin==0.9.1anddify-plugin==0.10.0.test-plugin-install.pyat toolkit commit94a5a3196aa6c1bab820557a15281198e881dcd2passed 12/12 executions./dev/null, and missing install method with an EOF pipe..env-configured local mode with/dev/nullalso remained on the SDK local path.Renderer and tool regression
dify-plugin==0.9.1.dify-plugin==0.10.0.Packaging and repository verification
--testrebuild was byte-identical to both official builds.--testcompleted successfully.zhangyuqz/si_wei_dao_tu_sheng_cheng_qi/zhangyu-si_wei_dao_tu_sheng_cheng_qi_0.0.19.difypkg.Pre Check Pluginworkflow for the replacement branch head completed successfully:https://github.com/langgenius/dify-plugins/actions/runs/30345554398
Reviewer notes
zhangyuqz/si_wei_dao_tu_sheng_cheng_qi/zhangyu-si_wei_dao_tu_sheng_cheng_qi_0.0.19.difypkg.15,581,979bytes, SHA-25689a5dc5c59c4cd6fe10be159fce41281a93994eb5cd359e328d86a6bf9444f86.15,583,844bytes, SHA-2561af04b50d83c42a4a3df19fe926ad87a1baf6d804f9bd5fb9d5b1e8d12c818c8.meta.version=0.0.2is the manifest-schema version and is intentionally unchanged.author=zhangyuandname=si_wei_dao_tu_sheng_cheng_qi.LICENSEfor the upstream work andLICENSE-zhangyuqzfor this enhanced edition.