Skip to content

reactor-sdk: update for js-sdk 3.0.0 and reactor-sdk 1.1.1 - #3

Open
ggoldens wants to merge 2 commits into
mainfrom
german/reactor-sdk-skill-update
Open

reactor-sdk: update for js-sdk 3.0.0 and reactor-sdk 1.1.1#3
ggoldens wants to merge 2 commits into
mainfrom
german/reactor-sdk-skill-update

Conversation

@ggoldens

@ggoldens ggoldens commented Aug 27, 2026

Copy link
Copy Markdown

Warning

Do not merge before @reactor-team/js-sdk@3.0.0 is 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-sdk still 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.md and references/python.md (plus SKILL.md's gotchas/checklist and references/models.md's roster) described SDK generations that no longer match reality — verified directly against reactor-client-sdks' sdks/js and sdks/python source, not from memory.

JS (@reactor-team/js-sdk 3.0.0, wasm-bindgen over reactor-core):

  • sendCommand() now awaits and resolves the real reply (Promise<ReactorMessage | undefined>) instead of firing-and-forgetting.
  • ReactorError is a typed class hierarchy now (UnauthorizedError, RateLimitedError, ConflictError, ...) — the old flat {code, message, component, ...} shape and component field are gone.
  • New recording/clip API: requestClip/requestRecording/downloadClipAsFile, plus React's ClipPlayer/ClipDownloadButton/useClipDownload — no prior-generation equivalent existed.
  • ReactorProvider gained modelTracks; useReactor gained pauseTrack/resumeTrack/requestClip/requestRecording/downloadClipAsFile action bindings.

Python (reactor-sdk, now 1.1.1 on PyPI):

  • Full rewrite — a ctypes wrapper over a native library, zero runtime deps.
  • send_command awaits its reply too, same as JS.
  • ReactorError is a class hierarchy mirroring the JS one (16 shared subclasses), component field gone.
  • Reconnection changed shape entirely: disconnect() takes no arguments and is never recoverable; reconnect() resumes the same session directly, no prior disconnect needed. The old disconnect(recoverable=True) + reconnect() dance doesn't exist here — don't port the JS pattern.
  • Frame handling and pause/resume moved off Reactor onto Track (track.on_frame, track.pause()/.resume()); Reactor.on_frame was removed in 0.9.0.
  • MessageScope, get_capabilities(), get_last_error(), get_remote_tracks(), get_session_info(), and a model_tracks constructor 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-app and the @reactor-models/<model> typed-per-model-SDK pointer, pulled from the current docs site.

Test plan

  • Every claim cross-checked against reactor-client-sdks' actual sdks/js/src and sdks/python/reactor_sdk source (constructor signatures, method lists, event names, error class hierarchies), not inferred from names or old docs.
  • Docs-only change — no build/test surface in this repo.

German 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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant