Skip to content

Feat/embed-activity - #290

Closed
nikas-belogolov wants to merge 14 commits into
TanStack:mainfrom
nikas-belogolov:feat/embed-activity
Closed

Feat/embed-activity#290
nikas-belogolov wants to merge 14 commits into
TanStack:mainfrom
nikas-belogolov:feat/embed-activity

Conversation

@nikas-belogolov

@nikas-belogolovnikas-belogolov commented Feb 13, 2026

Copy link
Copy Markdown
Contributor

🎯 Changes

Added embed/embedMany activity and Gemini embedding adapter

✅ Checklist

  • I have followed the steps in the Contributing guide.
  • I have tested this code locally with pnpm run test:pr.

🚀 Release Impact

  • This change affects published code, and I have generated a changeset.
  • This change is docs/CI/dev-only (no release).

Summary by CodeRabbit

  • New Features

    • Added text embedding capabilities with support for single and batch operations
    • Introduced Gemini as an embeddings provider with full adapter support
    • Enhanced all AI activities with telemetry and distributed tracing for improved observability
  • Chores

    • Added OpenTelemetry dependency for enhanced monitoring capabilities

@nikas-belogolov
nikas-belogolov requested a review from a teamFebruary 13, 2026 18:07
@coderabbitai

coderabbitaiBot commented Feb 13, 2026

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

📝 Walkthrough

Walkthrough

This PR adds embedding functionality to the TanStack AI framework. It introduces a base embedding adapter abstraction, implements a Gemini-specific embedding adapter, creates embed and embedMany activities with event emission, integrates telemetry across multiple activities, extends the event system with embedding-related events, and adds OpenTelemetry tracing utilities for observability.

Changes

Cohort / File(s)Summary
Changeset Declarations
.changeset/beige-colts-design.md, .changeset/tired-spoons-nail.md
Added changeset files declaring minor version bumps across packages with telemetry field additions and new embed/embedMany activity support.
Gemini Embedding Adapter
packages/typescript/ai-gemini/src/adapters/embedding.ts, packages/typescript/ai-gemini/src/embedding/embedding-provider-options.ts, packages/typescript/ai-gemini/src/model-meta.ts
Implemented Gemini embedding adapter with configuration, provider options validation, and embed/embedMany methods; added GEMINI_EMBEDDING_001 model metadata and supporting types.
Core Embedding Infrastructure
packages/typescript/ai/src/activities/embed/adapter.ts, packages/typescript/ai/src/activities/embed/embed.ts, packages/typescript/ai/src/activities/embed/embed-many.ts, packages/typescript/ai/src/activities/embed/index.ts
Created base embedding adapter abstraction and activity functions for single and batch embeddings with event emission and request tracing.
Activity Telemetry Integration
packages/typescript/ai/src/activities/chat/index.ts, packages/typescript/ai/src/activities/generateImage/index.ts, packages/typescript/ai/src/activities/generateSpeech/index.ts, packages/typescript/ai/src/activities/generateTranscription/index.ts, packages/typescript/ai/src/activities/generateVideo/index.ts, packages/typescript/ai/src/activities/summarize/index.ts
Integrated telemetry support across activities with span recording, event enrichment, and OpenTelemetry tracing; exposed additional base adapter classes.
Telemetry Infrastructure
packages/typescript/ai/src/telemetry/types.ts, packages/typescript/ai/src/telemetry/attributes.ts, packages/typescript/ai/src/telemetry/get-tracer.ts, packages/typescript/ai/src/telemetry/record-span.ts
Added telemetry types (TelemetrySettings, TelemetryEvent), span attribute builders, tracer initialization, and span recording utilities for OpenTelemetry integration.
Event System and Type Extensions
packages/typescript/ai/src/event-client.ts, packages/typescript/ai/src/types.ts, packages/typescript/ai/src/activities/index.ts, packages/typescript/ai/package.json
Extended event system with embed-related events and usage tracking; added embedding option/result types to core types; exposed embedding exports from activities; added @opentelemetry/api dependency.

Sequence Diagram(s)

sequenceDiagram
participant Client
participant Activity as embed Activity
participant Adapter as EmbeddingAdapter
participant Tracer
participant EventClient
Client->>Activity: embed({ adapter, value, modelOptions, telemetry })
Activity->>Activity: generateRequestId()
Activity->>EventClient: emit 'embed:request:started'
Activity->>Tracer: getTracer(telemetry.tracer)
Activity->>Activity: recordSpan({ tracer, name, attributes, fn })
Activity->>Adapter: embed({ value, modelOptions })
Adapter-->>Activity: EmbedResult { id, model, embedding, usage }
Activity->>EventClient: emit 'embed:request:completed'
Activity->>EventClient: emit 'embed:usage' (if usage exists)
Activity-->>Client: EmbedResult
Loading
sequenceDiagram
participant Activity as Activity (chat/image/speech/etc)
participant Tracer
participant Span
participant Adapter
participant EventClient
Activity->>Activity: recordSpan({ tracer, name, attributes, fn })
Tracer->>Span: startSpan(name, attributes)
Activity->>EventClient: emit 'request:started' with telemetry
Span->>Adapter: execute adapter call
Adapter-->>Span: result with usage/response data
Activity->>Span: recordAttribute(span, 'gen_ai.response.id', id)
Activity->>Span: recordAttribute(span, input/output tokens)
Activity->>EventClient: emit 'request:completed' with telemetry
Activity->>EventClient: emit 'usage' with telemetry (if applicable)
Span-->>Activity: end span
Activity-->>Client: result
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested reviewers

  • jherr
  • AlemTuzlak

Poem

🐰 Embeddings bloom in vectors bright,
Through Gemini's adapter, shining light,
Telemetry traces each flowing span,
Events and traces, all part of the plan,
From chunks to numbers, the tale takes flight! ✨

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@nx-cloud

nx-cloudBot commented Feb 13, 2026

Copy link
Copy Markdown

🤖 Nx Cloud AI Fix Eligible

An automatically generated fix could have helped fix failing tasks for this run, but Self-healing CI is disabled for this workspace. Visit workspace settings to enable it and get automatic fixes in future runs.

To disable these notifications, a workspace admin can disable them in workspace settings.


View your CI Pipeline Execution ↗ for commit ac9cae6

CommandStatusDurationResult
nx affected --targets=test:sherif,test:knip,tes...❌ Failed3m 8sView ↗
nx run-many --targets=build --exclude=examples/**✅ Succeeded1m 20sView ↗

☁️ Nx Cloud last updated this comment at 2026-02-13 18:13:32 UTC

@nikas-belogolov
nikas-belogolov deleted the feat/embed-activity branch February 13, 2026 18:17
Sign up for freeto 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

@nikas-belogolov