feat(voice): flow version asset endpoints - #39
Merged
Conversation
Adds the client half of the flow-audio transport slice (wavekat-platform doc 17): flow_version_assets(flow, version) fetches a published version's frozen-audio manifest (ref, format, byteSize, durationMs, contentHash), and flow_version_asset_bytes(flow, version, ref) streams one frozen clip. Both are flow-scoped server-side (404 for a non-owned version). Adds a get_bytes helper for small in-memory binary GETs and a manifest parse test. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012hwfmDu5vALMY9yZzeftiu
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.
Adds the client half of the flow-audio transport slice (wavekat-platform doc 17), so the desktop daemon can pull a published flow version's frozen audio:
flow_version_assets(flow_id, version)→ the frozen-audio manifest (ref,format,byte_size,duration_ms,content_hash).flow_version_asset_bytes(flow_id, version, ref)→ one frozen clip's bytes.get_byteshelper for small in-memory binary GETs.Both new endpoints are flow-scoped server-side (a version of a flow the caller doesn't own is a 404), reusing the bearer auth already in place. Wire types (
VoiceFlowVersionAsset,VoiceFlowAssetsPage) mirror the platform's camelCase shape;refmaps toasset_ref. Unit test covers manifest parsing (incl. a null duration and an empty text-only manifest).Consumer:
wavekat-voice'ssync::pull_flow_assetsdownloads each manifest entry into a version-scoped cache, verifying sha256 againstcontent_hashbefore caching. That branch currently builds against this one via a temporary[patch]; it drops the patch and bumps the pin once this releases.Server side: wavekat-platform
feat/voice-flow-editor-continue(manifest endpoint + freeze-on-publish, docs 16/17).🤖 Generated with Claude Code