From 1493991a4cf73321279fb6b7759f7898e6dd7a30 Mon Sep 17 00:00:00 2001 From: Alem Tuzlak Date: Wed, 24 Jun 2026 13:53:30 +0200 Subject: [PATCH] docs: fix grok video snippets so kiira passes; publish ai-angular The grok video-generation snippets in docs/adapters/grok.md and docs/media/video-generation.md referenced generateVideo/grokVideo without importing them, failing the test:kiira gate on main and aborting every release run before changeset publish. Make each standalone fence self-contained with its own imports, and add a changeset to cut a clean @tanstack/ai-angular release (npm 0.0.1 shipped unresolved workspace: specifiers from a manual publish). --- .changeset/publish-ai-angular.md | 5 +++++ docs/adapters/grok.md | 3 +++ docs/media/video-generation.md | 5 +++++ 3 files changed, 13 insertions(+) create mode 100644 .changeset/publish-ai-angular.md diff --git a/.changeset/publish-ai-angular.md b/.changeset/publish-ai-angular.md new file mode 100644 index 000000000..d93ddd6b9 --- /dev/null +++ b/.changeset/publish-ai-angular.md @@ -0,0 +1,5 @@ +--- +'@tanstack/ai-angular': patch +--- + +Publish a working `@tanstack/ai-angular` build. The only version previously on npm (`0.0.1`) was seeded with a manual `npm publish` and shipped unresolved `workspace:` specifiers in its `dependencies`/`peerDependencies`, making it uninstallable (`EUNSUPPORTEDPROTOCOL`). Releasing through the changesets pipeline rewrites those specifiers to concrete versions. diff --git a/docs/adapters/grok.md b/docs/adapters/grok.md index a6a6dfd55..832ac9986 100644 --- a/docs/adapters/grok.md +++ b/docs/adapters/grok.md @@ -270,6 +270,9 @@ console.log(status.url); // hosted .mp4 URL For image-to-video (required for `grok-imagine-video-1.5`, optional for `grok-imagine-video`), include an `image` prompt part as the starting frame and describe the desired motion in the text part. URL sources are fetched by xAI's servers (so they must be publicly reachable); use a `data` source for a base64 starting frame: ```typescript +import { generateVideo } from "@tanstack/ai"; +import { grokVideo } from "@tanstack/ai-grok"; + const { jobId } = await generateVideo({ adapter: grokVideo("grok-imagine-video-1.5"), prompt: [ diff --git a/docs/media/video-generation.md b/docs/media/video-generation.md index a66253493..ebf9b0606 100644 --- a/docs/media/video-generation.md +++ b/docs/media/video-generation.md @@ -598,6 +598,9 @@ const { jobId } = await generateVideo({ Image-to-video (required for `grok-imagine-video-1.5`) — include an `image` prompt part as the starting frame. URL sources are fetched by xAI's servers (so they must be publicly reachable); use a `data` source for a base64 starting frame: ```typescript +import { generateVideo } from '@tanstack/ai' +import { grokVideo } from '@tanstack/ai-grok' + const { jobId } = await generateVideo({ adapter: grokVideo('grok-imagine-video-1.5'), prompt: [ @@ -615,6 +618,8 @@ const { jobId } = await generateVideo({ Both models accept any whole second in the **1–15** range. A raw `duration` is coerced into that range rather than rejected — values are clamped to `[1, 15]` and rounded to the nearest second. Inspect or pre-snap the range the same way as Veo: ```typescript +import { grokVideo } from '@tanstack/ai-grok' + const adapter = grokVideo('grok-imagine-video') adapter.availableDurations() // { kind: 'range', min: 1, max: 15, step: 1, unit: 'seconds' }