feat(lacuna_music): add Lacuna Music plugin v0.1.0 - #2850
Merged
crazywoola merged 1 commit intoAug 10, 2026
Conversation
crazywoola
approved these changes
Aug 10, 2026
crazywoola
left a comment
Member
There was a problem hiding this comment.
✅ LGTM
Decision: Approve
Local Check Results
| Check | Status | Detail | Required action |
|---|---|---|---|
PR content language |
✅ Pass | PR title/body CJK ratio=0.0% (zh=0, en=3507, 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.svg | None. |
Version check |
✅ Pass | version 0.1.0 is available. | None. |
README language |
✅ Pass | README.md CJK ratio=0.0% (zh=0, en=2666, 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.1 satisfies >= 0.9.0. | None. |
Install test |
✅ Pass | plugin install test passed. | None. |
Packaging test |
✅ Pass | packaging check passed. | None. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Plugin Submission
Plugin information
dify/lacuna)Submission type
What changed
New tool plugin for the Lacuna Music API. It generates original music from a text style
description — background beds and soundtrack loops for video, podcast, game and ad workflows, and
full vocal tracks when lyrics are supplied — and returns hosted MP3 URLs for the next node.
Three tools:
generate_music— submits a generation and polls until the audio is ready (blocking).create_generation— queues the same request and returns the task id immediately.get_generation— reads a task's status and, once ready, its audio URLs. Free, no credits.Credentials: a single
secret-inputAPI key, validated on save by a probe against a task id thatcannot exist. Lacuna checks the key, its scopes and the account plan before looking the task up, so a
404 proves the credential works — nothing is generated and no credits move.
Risk level
Medium rather than low because the plugin sends user-authored content (style description, lyrics,
title) to a third-party service and performs a write action there by queueing a generation. It calls
one fixed, documented HTTPS host and nothing else.
Required checks
.envfiles,.gitdirectories, virtual environments, caches, logs, or IDE files.PRIVACY.mdor a hosted privacy policy, andmanifest.yamlreferences it.Security and privacy notes
No command execution, code execution, SQL, SSH/SFTP, browser automation, filesystem access or
arbitrary URL fetching. The plugin reaches exactly one host,
www.lacuna.fm, declared inmanifest.yamlundernetwork.domains. It does not read environment variables or files, storesnothing locally, and does not download the generated audio — it passes the URLs through.
No health, financial, biometric, children's, location or authentication data is processed. The only
credential is the Lacuna API key, held in Dify's
secret-inputfield; it is never logged and neverincluded in an error message.
On the
prohibited_financial_activitywarning: the validator flags the word "credits" in theREADME and in two error messages. Those refer to Lacuna's own prepaid account balance, which the
Lacuna API meters and refunds server-side. The plugin performs no payment, transfer or token
movement of any kind, presents no checkout, and handles no payment instrument — it only reports the
credits_usedandcredits_refundednumbers the API returns so a workflow can log them.Local validation
Tool logic is covered by unit checks on the request builder (required fields, the instrumental /
lyrics rule, and dropping the aether-only controls when another model is selected) plus a live check
that an invalid key surfaces the API's 401 message.
Reviewer notes
Dependencies are pinned exactly (
dify-plugin==0.10.1,requests==2.34.2) so the vulnerabilitycheck has something to look up. No binaries, no bundled assets beyond a 1 KB SVG icon.
Known limitation: a generation takes a few minutes, so
generate_musicblocks while polling and theplugin raises
MAX_REQUEST_TIMEOUTto 600s. Workflows that should not block that long can usecreate_generationplusget_generation, or subscribe to Lacuna'sjob.completedwebhook.