Local media nodes DO run headlessly — say what each one needs - #5
Open
mikkel wants to merge 1 commit into
Open
Conversation
…eeds references/graph-format.md told an agent that resize, vframes, combine, soundtrack, trim and extractaudio are "browser-only media processing", and that the executors load such graphs with a warning and fail fast at run with UnsupportedNodeError. That is false, and SKILL.md line 248 already said the opposite in the same skill. The truth, read off the executors: - nanoodle-js src/local-media.mjs implements a pure-JS path (PNG resize, PCM-WAV trim, MP4CAT lossless mp4 concat) and shells out to ffmpeg/ffprobe on PATH for everything else. - nanoodle-py src/nanoodle/local_media.py has no pure path at all: every one of the 6 node types shells out to ffmpeg. - Neither library marks any node type unsupported. In nanoodle-py, graph.UNSUPPORTED_TYPES evaluates to the empty tuple; nanoodle-js has no equivalent flag. UnsupportedNodeError is raised only for an UNKNOWN node type. A false "not supported" costs an agent a capability it has. The fix states the truth per node and per language, and keeps the up-front-refusal sentence where it belongs: unknown types only. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
What breaks today
references/graph-format.mdmarks 6 node types LOCAL, browser-only and then says:That is false.
SKILL.mdline 248 in the same skill already said the opposite, so the skill contradicted itself. An agent that reads the reference file drops a whole class of workflow it could actually build and run.The truth, read off the executors
nanoodle-js/src/local-media.mjsimplements the ops headlessly. It runs a pure-JS path first (PNG resize via its own PNG codec, PCM-WAV trim, MP4CAT lossless mp4 concat) and shells out toffmpeg/ffprobeonPATHfor everything else.nanoodle-py/src/nanoodle/local_media.pyhas no pure path. Every one of the 6 node types shells out to ffmpeg.nanoodle-py'sgraph.UNSUPPORTED_TYPESevaluates to the empty tuple;nanoodle-js'sgraph.mjshas no equivalent flag and lists all 6 aslocal: true.UnsupportedNodeErroris raised only for an unknown node type (nanoodle-js/src/workflow.mjs:183-188,nanoodle-py/src/nanoodle/workflow.py:208-215). The retireddrawtype is the live example.What the change does
references/graph-format.mdgets a per-node, per-language table:The "refused up front, before any network call" sentence stays, narrowed to the case where it is true: an unknown node type.
The table cells lose the
browser-onlyhalf of their(LOCAL, browser-only)tag and read(LOCAL media).SKILL.mdloses one imprecise clause. A missing-ffmpeg error does not arrive "before any paid call" — it arrives when that node's turn comes, so paid nodes upstream have already spent. The page now says so and tells the reader to prove the setup with a media-only graph first.No node type was added or removed. The
drawretirement is already complete in this repo.