Changelog
This page preserves the previous SDK documentation and its existing URL. The generated API reference was produced from SDK 0.1.5, source commit 4db9fbe925bf07a4b95e936a5bb172d6ab5820bb. Handbook behavior and compatibility claims below are historical descriptions, not a newly verified support guarantee. For the reviewed version-specific reference, see the SDK 0.1.5 overview.
The format follows Keep a Changelog and the package follows Semantic Versioning.
Published under the npm scope @ki-kombinat as @ki-kombinat/delphi-client-js-sdk.
0.1.4 — 2026-07-27
Compatible with Delphi platform v0.9.15. See the v0.9.15 release notes.
Added
- Text chat sessions —
mode: 'text'sessions can send pure text messages againstWEB_CHATendpoints. - Text ↔ voice handoff —
DelphiClient.upgradeToVoice()andDelphiClient.downgradeToText()continue the same runtimesessionIdacross text chat and WebRTC voice. - Read-aloud playback lifecycle —
SessionState.audioRequestPending/audioPlaying, plusonAudioPlaybackStart/onAudioPlaybackEndcallbacks (also exposed throughuseDelphiSession) so UIs can show a spinner from send until browser playback starts and ends. - React example —
TextChatDemoshows text chat plus optional voice upgrade withVITE_TEXT_CHAT_ENDPOINT_ID.
Changed
- Segmented MP3 read-aloud — when the server splits TTS into sentence-level MP3 segments, the SDK queues and plays them as one logical response;
audioDone()still resolves once for the full reply. - Interruptible playback — a new
readAloud/ audio browser-action request immediately stops the currently playing audio and resets the playback queue so the fresh response starts without waiting. Interrupted playback is cancelled gracefully and does not surface a playback error.
Fixed
- Weak cryptography —
randomStringnow usescrypto.getRandomValuesinstead ofMath.random.
0.1.3 — 2026-05-12
Compatible with Delphi platform v0.9.11. See the v0.9.11 release notes.
Changed
- Session map is keyed by
endpointId+SessionMode— the same endpoint can hold avoice_conversationspeaker and alistensubscriber at once, each with its own token,sessionId, and channel WebSocket.getSessionnow accepts an optionalmode; omitting it returns an arbitrary match for that endpoint (avoid when multiple modes are open).endSession(endpointId)still closes every mode for that endpoint; passendSession(endpointId, mode)to close one.
Fixed
- Voice session open —
telproDomainandwebrtcGatewayUrlare required and validated before the client caches avoice_conversationentry, so failed token responses do not wedge retries.startCallclears preparing state whenopenSessionthrows; if runtime state is missing gateway metadata (e.g. after upgrading from an older SDK),startCallattempts recovery viaendCallbefore surfacing errors.
Updated
- React —
useDelphiSessionresolvesgetSession(endpointId, mode)so hooks align with the mode-specific map. - Examples — the interpretation listener avoids duplicate
listensubscriptions on repeated clicks; read-aloud "End session" closesaudio_playbackonly.
0.1.2 — 2026-05-10
Added
- Interpretation speaker / listener —
SessionMode'listen',DelphiClient.listen(),SessionClient.listen(), andListenOptionsfor subscribing to TelPhi interpretation streams (replay + live). Speaker side usesvoice_conversationwithBrowserContext.role: 'speaker'; listener uses'listen'withrole: 'listener'and matchingidentifier/ scope. - Published under the npm scope
@ki-kombinat.
0.1.0
Initial public release. See the SDK's [README.md] for the full surface at first release.