TanStack
OSS
ai
Sign in / Sign up
Open main menu
ai
GitHub
Overview
Runs
Analytics
Loading workspace stats
Loading workspace insights...
Statistics interval
7 days
30 days
Latest CI Pipeline Executions
Status
Fix filter
Filter
Fuzzy
Filter range
Sort by
Sort by
Start time
Sort ascending
Sort descending
Succeeded
503-add-audio-and-speech-support-to-grok-adapter
c467c6a7 ci: apply automated fixes
by autofix-ci...
a
Succeeded
503-add-audio-and-speech-support-to-grok-adapter
c467c6a7 Merge 268ad6aab1174289c16ccc80dbe7430ce6a53ffd into af9eb7bbb875b23b7e99b2e6b743636daad402d1
by Tom Beckenham
T
Succeeded
503-add-audio-and-speech-support-to-grok-adapter
4d8f1161 fix(ai-grok): address CodeRabbit PR review - tts.ts / transcription.ts: spread `defaultHeaders` BEFORE Authorization / Content-Type so a caller-supplied header can't silently clobber the bearer token or auth content-type. - utils/audio.ts: new `arrayBufferToBase64` helper — Buffer fast path on Node, chunked btoa fallback everywhere else (browser, Workers, Bun). Replaces the Node-only `Buffer.from(arrayBuffer).toString('base64')` in tts.ts. - transcription.ts: new `GrokTranscriptionWord` interface extends the core `TranscriptionWord` with optional `confidence` and `speaker`. The adapter now preserves both fields when xAI returns them, so callers that narrow via `as Array<GrokTranscriptionWord>` get the diarization output they asked for. Test expectations updated. - tts.ts: mulaw/alaw `contentType` now includes a `;rate=…` parameter (as `audio/PCMU` / `audio/PCMA` per RFC 3551) when the caller requests a non-default sample rate, instead of the 8 kHz-implying `audio/basic` / `audio/x-alaw-basic`. - realtime/adapter.ts: `conversation.item.truncated` flips mode back to `listening` so the visualiser can't get stuck on `speaking` after an interrupt. `sendEvent` wraps `dataChannel.send` in try/catch consistent with `flushPendingEvents`. The shared `emptyFrequencyData` / `emptyTimeDomainData` buffers are gone — `getAudioVisualization` returns a fresh `Uint8Array` per call so consumers can't mutate a module-level instance. - realtime/token.ts: adds a 15s `AbortController` timeout on the client_secrets request so a dead endpoint can't hang the caller forever. Validates `client_secret.value` / `expires_at` shape at runtime before dereferencing so a malformed response throws a descriptive error. - realtime/realtime-contract.ts: JSDoc filename ref updated. - examples/ts-react-chat audio/speech/transcribe routes: unify the 400 unknown_provider payload under the `provider` key (was `providerId`) to match the invalid_model_override branch and the request body.
by Alem Tuzlak
A
Succeeded
503-add-audio-and-speech-support-to-grok-adapter
4d8f1161 fix(ai-grok): address CodeRabbit PR review - tts.ts / transcription.ts: spread `defaultHeaders` BEFORE Authorization / Content-Type so a caller-supplied header can't silently clobber the bearer token or auth content-type. - utils/audio.ts: new `arrayBufferToBase64` helper — Buffer fast path on Node, chunked btoa fallback everywhere else (browser, Workers, Bun). Replaces the Node-only `Buffer.from(arrayBuffer).toString('base64')` in tts.ts. - transcription.ts: new `GrokTranscriptionWord` interface extends the core `TranscriptionWord` with optional `confidence` and `speaker`. The adapter now preserves both fields when xAI returns them, so callers that narrow via `as Array<GrokTranscriptionWord>` get the diarization output they asked for. Test expectations updated. - tts.ts: mulaw/alaw `contentType` now includes a `;rate=…` parameter (as `audio/PCMU` / `audio/PCMA` per RFC 3551) when the caller requests a non-default sample rate, instead of the 8 kHz-implying `audio/basic` / `audio/x-alaw-basic`. - realtime/adapter.ts: `conversation.item.truncated` flips mode back to `listening` so the visualiser can't get stuck on `speaking` after an interrupt. `sendEvent` wraps `dataChannel.send` in try/catch consistent with `flushPendingEvents`. The shared `emptyFrequencyData` / `emptyTimeDomainData` buffers are gone — `getAudioVisualization` returns a fresh `Uint8Array` per call so consumers can't mutate a module-level instance. - realtime/token.ts: adds a 15s `AbortController` timeout on the client_secrets request so a dead endpoint can't hang the caller forever. Validates `client_secret.value` / `expires_at` shape at runtime before dereferencing so a malformed response throws a descriptive error. - realtime/realtime-contract.ts: JSDoc filename ref updated. - examples/ts-react-chat audio/speech/transcribe routes: unify the 400 unknown_provider payload under the `provider` key (was `providerId`) to match the invalid_model_override branch and the request body.
by Alem Tuzlak
A
Succeeded
503-add-audio-and-speech-support-to-grok-adapter
cab9b2ec ci: apply automated fixes
by autofix-ci...
a
Succeeded
503-add-audio-and-speech-support-to-grok-adapter
cab9b2ec ci: apply automated fixes
by autofix-ci...
a
Succeeded
503-add-audio-and-speech-support-to-grok-adapter
00611a7e refactor(ai-grok): drop @tanstack/ai-client peer dep by inlining realtime contract The RealtimeAdapter / RealtimeConnection interfaces are duplicated locally in src/realtime/realtime-contract.ts. The adapter imports them from there instead of @tanstack/ai-client, so consumers of @tanstack/ai-grok no longer have to install @tanstack/ai-client unless they also want to construct a RealtimeClient from it (structural typing covers that use case). @tanstack/ai-client stays as a devDependency to run a type-level drift check (tests/realtime-contract.drift.test-d.ts) that asserts our inlined contract is bidirectionally assignable to the canonical one. If ai-client ever changes the interface, that file will fail to compile and we update both in lockstep. publint --strict: clean.
by Alem Tuzlak
A
Succeeded
503-add-audio-and-speech-support-to-grok-adapter
363a266d ci: apply automated fixes
by autofix-ci...
a
Succeeded
503-add-audio-and-speech-support-to-grok-adapter
363a266d ci: apply automated fixes
by autofix-ci...
a
Succeeded
503-add-audio-and-speech-support-to-grok-adapter
07a07298 test(ai-grok): cover realtime token body { session: { model } } shape
by Alem Tuzlak
A
Succeeded
503-add-audio-and-speech-support-to-grok-adapter
07a07298 test(ai-grok): cover realtime token body { session: { model } } shape
by Alem Tuzlak
A
Succeeded
503-add-audio-and-speech-support-to-grok-adapter
0c1ecd43 ci: apply automated fixes
by autofix-ci...
a
Succeeded
503-add-audio-and-speech-support-to-grok-adapter
0c1ecd43 ci: apply automated fixes
by autofix-ci...
a
Succeeded
503-add-audio-and-speech-support-to-grok-adapter
37de8959 fix(ai-grok): extensionFor maps mulaw/alaw MIME types to sensible filenames utils/audio.ts produced 'audio.basic' and 'audio.x-alaw-basic' for mulaw/alaw via the default-branch MIME split. Servers using filename as a format hint now see 'audio.mulaw' / 'audio.alaw', matching the reverse toMimeType mapping.
by Alem Tuzlak
A
Succeeded
503-add-audio-and-speech-support-to-grok-adapter
37de8959 fix(ai-grok): extensionFor maps mulaw/alaw MIME types to sensible filenames utils/audio.ts produced 'audio.basic' and 'audio.x-alaw-basic' for mulaw/alaw via the default-branch MIME split. Servers using filename as a format hint now see 'audio.mulaw' / 'audio.alaw', matching the reverse toMimeType mapping.
by Alem Tuzlak
A
Succeeded
503-add-audio-and-speech-support-to-grok-adapter
c5ebdcd6 ci: apply automated fixes
by autofix-ci...
a
Succeeded
503-add-audio-and-speech-support-to-grok-adapter
c5ebdcd6 Merge 2d713c26a22eb4d8a19de95e7eba4e0935084c1e into dc71c721a01d3b5d73d09e36fc2d87873b206b1b
by Tom Beckenham
T
Succeeded
503-add-audio-and-speech-support-to-grok-adapter
160e2a63 test(ai-grok): route audio adapter tests through core functions Per project convention, tests should not invoke adapter methods directly — they call generateSpeech()/generateTranscription() with the adapter instance, so the core function injects logger, emits events, and exercises the real public surface. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
by Tom Beckenham
T
Succeeded
503-add-audio-and-speech-support-to-grok-adapter
172158b5 fix(ai-grok): pass logger to audio adapter tests After the logger was wired into the audio adapters, the unit tests need to provide one when calling transcribe/generateSpeech directly (activities normally inject it via resolveDebugOption). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
by Tom Beckenham
T
Succeeded
503-add-audio-and-speech-support-to-grok-adapter
172158b5 fix(ai-grok): pass logger to audio adapter tests After the logger was wired into the audio adapters, the unit tests need to provide one when calling transcribe/generateSpeech directly (activities normally inject it via resolveDebugOption). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
by Tom Beckenham
T
Previous page
Previous
Next
Next page