reactor-sdk: update for js-sdk 3.0.0 and reactor-sdk 1.1.1 - #3
Open
ggoldens wants to merge 2 commits into
Open
Conversation
added 2 commits
August 27, 2026 14:17
Both SDKs drifted far past what this skill described: - JS: sendCommand() now awaits and resolves the real reply instead of firing-and-forgetting; ReactorError became a typed class hierarchy (component field dropped); new recording/clip API (requestClip, requestRecording, downloadClipAsFile, ClipPlayer, ClipDownloadButton, useClipDownload); ReactorProvider gained modelTracks; useReactor gained pauseTrack/resumeTrack/requestClip/requestRecording/ downloadClipAsFile action bindings. - Python: this is now a ctypes wrapper over a native library, not the SDK generation the old docs described. send_command awaits its reply too. ReactorError is a class hierarchy mirroring the JS one. Reconnection changed shape entirely (disconnect() takes no args and is never recoverable; reconnect() resumes the same session directly). Frame handling and pause/resume moved off Reactor onto Track. MessageScope, get_capabilities/get_last_error/ get_remote_tracks/get_session_info, model_tracks, and Reactor.on_frame no longer exist. - Model roster and create-reactor-app/@reactor-models/<model> pointers in models.md were stale against the current docs site. @reactor-team/js-sdk 3.0.0 is not published to npm yet (still on 2.x) — the JS-facing sections say so inline rather than waiting to merge, since the caveat is what keeps them from being misleading in the meantime. reactor-sdk 1.1.1 (Python) is already on PyPI, no caveat needed there. Verified directly against reactor-client-sdks' sdks/js and sdks/python source (not from memory or export/type names alone).
Write the JS references as the current state, no hedging — the PR description carries the "don't merge before npm publish" warning instead, same pattern as the reactor-cookbook SDK bump PR.
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.
Warning
Do not merge before
@reactor-team/js-sdk@3.0.0is published to npm. The JS/React references in this PR document 3.0.0 as the current state, with no hedging —npm install @reactor-team/js-sdkstill resolves 2.x today, so this content is only accurate once the real release goes out.reactor-sdk(Python) is already at 1.1.1 on PyPI, so those changes are accurate right now and could ship independently if that's easier.Summary
Both
references/javascript.md/react.mdandreferences/python.md(plusSKILL.md's gotchas/checklist andreferences/models.md's roster) described SDK generations that no longer match reality — verified directly againstreactor-client-sdks'sdks/jsandsdks/pythonsource, not from memory.JS (
@reactor-team/js-sdk3.0.0, wasm-bindgen overreactor-core):sendCommand()now awaits and resolves the real reply (Promise<ReactorMessage | undefined>) instead of firing-and-forgetting.ReactorErroris a typed class hierarchy now (UnauthorizedError,RateLimitedError,ConflictError, ...) — the old flat{code, message, component, ...}shape andcomponentfield are gone.requestClip/requestRecording/downloadClipAsFile, plus React'sClipPlayer/ClipDownloadButton/useClipDownload— no prior-generation equivalent existed.ReactorProvidergainedmodelTracks;useReactorgainedpauseTrack/resumeTrack/requestClip/requestRecording/downloadClipAsFileaction bindings.Python (
reactor-sdk, now 1.1.1 on PyPI):ctypeswrapper over a native library, zero runtime deps.send_commandawaits its reply too, same as JS.ReactorErroris a class hierarchy mirroring the JS one (16 shared subclasses),componentfield gone.disconnect()takes no arguments and is never recoverable;reconnect()resumes the same session directly, no prior disconnect needed. The olddisconnect(recoverable=True)+reconnect()dance doesn't exist here — don't port the JS pattern.ReactorontoTrack(track.on_frame,track.pause()/.resume());Reactor.on_framewas removed in 0.9.0.MessageScope,get_capabilities(),get_last_error(),get_remote_tracks(),get_session_info(), and amodel_tracksconstructor param do not exist in this SDK — several of these were probably assumed present by anyone extrapolating from the JS SDK.models.md: roster (HappyOyster, LingBot World 2, X2, LTX were missing/renamed), plus
create-reactor-appand the@reactor-models/<model>typed-per-model-SDK pointer, pulled from the current docs site.Test plan
reactor-client-sdks' actualsdks/js/srcandsdks/python/reactor_sdksource (constructor signatures, method lists, event names, error class hierarchies), not inferred from names or old docs.