Skip to content

Decouple 42 files from @google/genai via Delta type barrel - #14

Merged
tjdoomer merged 2 commits into
mainfrom
refactor/delta-types
Apr 2, 2026
Merged

tjdoomer merged 2 commits into
mainfrom
refactor/delta-types

Conversation

@tjdoomer

@tjdoomer tjdoomer commented Apr 2, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Creates packages/core/src/types/delta.ts as the single decoupling point from @google/genai. 42 files migrated from direct SDK imports to the Delta barrel — pure import path changes, zero logic changes.

What changed

  • New types/delta.ts barrel re-exports all shared types (Content, Part, GenerateContentResponse, FunctionDeclaration, etc.)
  • 42 non-provider files now import from ../types/delta.js instead of @google/genai
  • 11 files intentionally keep direct @google/genai imports (provider adapters, factory, the barrel itself)

Why this matters

When we replace @google/genai types with native Delta definitions, only types/delta.ts changes — the other 42 files are completely unaffected. This is the foundation for supporting provider-specific features (Anthropic citations, OpenAI structured outputs) without being constrained by Google's type system.

Also includes

  • Native DeltaModelCapabilities and DeltaProviderType types for features not representable in @google/genai

Test plan

  • All 1873 tests pass
  • Type-check clean
  • Full workspace build clean
  • Verified remaining direct imports are all intentional (provider-specific)

Summary by CodeRabbit

  • New Features

    • Added DeltaModelCapabilities interface defining model capability properties (tool calling, vision, streaming, context window, and think blocks)
    • Added DeltaProviderType to enumerate supported AI provider identifiers
  • Refactor

    • Created centralized Delta types module consolidating type definitions for improved consistency across the codebase
  • Documentation

    • Added roadmap documentation outlining the Delta types refactoring strategy and implementation phases

Native DeltaMessage/DeltaPart/DeltaResponse types with per-provider
adapter layer. 67 files to migrate — gated behind branches 1 and 2.
Create packages/core/src/types/delta.ts as the single point of
decoupling from @google/genai. All 42 non-provider files now import
from the Delta barrel instead of directly from the SDK.

Remaining direct @google/genai imports (11 files) are intentional:
- types/delta.ts (the barrel itself)
- contentGenerator.ts, config.ts (GoogleGenAI constructor)
- openai/anthropic/qwen ContentGenerators (provider adapters)
- loggingContentGenerator.ts (wraps Google SDK)
- converter.ts, server.ts (Vertex AI / Code Assist)
- mcp-client.ts (mcpToTool function)
- deltaChat.ts (SendMessageParameters, createUserContent)

When we replace @google/genai types with native Delta definitions,
only types/delta.ts changes — the other 42 files are unaffected.

All 1873 tests pass. Full workspace build clean.
@tjdoomer
tjdoomer merged commit 1548225 into main Apr 2, 2026
@coderabbitai

coderabbitai Bot commented Apr 2, 2026 •

Copy link
Copy Markdown

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 1f618c60-e49a-4836-b704-1d3c2cf98cd1

📥 Commits

Reviewing files that changed from the base of the PR and between e27e0da and 34b21cc.

📒 Files selected for processing (43)
  • docs/roadmap/05-delta-types.md
  • packages/cli/src/nonInteractiveCli.ts
  • packages/cli/src/ui/commands/types.ts
  • packages/cli/src/ui/hooks/atCommandProcessor.ts
  • packages/cli/src/ui/hooks/shellCommandProcessor.ts
  • packages/cli/src/ui/hooks/slashCommandProcessor.ts
  • packages/cli/src/ui/hooks/useDeltaStream.ts
  • packages/cli/src/zed-integration/zedIntegration.ts
  • packages/core/src/core/client.ts
  • packages/core/src/core/coreToolScheduler.ts
  • packages/core/src/core/deltaChat.ts
  • packages/core/src/core/deltaRequest.ts
  • packages/core/src/core/logger.ts
  • packages/core/src/core/subagent.ts
  • packages/core/src/core/turn.ts
  • packages/core/src/telemetry/types.ts
  • packages/core/src/test-utils/tools.ts
  • packages/core/src/tools/checkpoint.ts
  • packages/core/src/tools/diffPreview.ts
  • packages/core/src/tools/fileSummary.ts
  • packages/core/src/tools/lint.ts
  • packages/core/src/tools/mcp-client.ts
  • packages/core/src/tools/mcp-tool.ts
  • packages/core/src/tools/memoryTool.ts
  • packages/core/src/tools/multiEdit.ts
  • packages/core/src/tools/read-file.ts
  • packages/core/src/tools/read-many-files.ts
  • packages/core/src/tools/repoMap.ts
  • packages/core/src/tools/runTests.ts
  • packages/core/src/tools/think.ts
  • packages/core/src/tools/todoWrite.ts
  • packages/core/src/tools/tool-registry.ts
  • packages/core/src/tools/tools.ts
  • packages/core/src/types/delta.ts
  • packages/core/src/utils/editCorrector.ts
  • packages/core/src/utils/environmentContext.ts
  • packages/core/src/utils/errorReporting.ts
  • packages/core/src/utils/fileUtils.ts
  • packages/core/src/utils/generateContentResponseUtilities.ts
  • packages/core/src/utils/messageInspectors.ts
  • packages/core/src/utils/nextSpeakerChecker.ts
  • packages/core/src/utils/partUtils.ts
  • packages/core/src/utils/summarizer.ts

📝 Walkthrough

Walkthrough

This pull request introduces a centralized Delta type definitions module and migrates 40+ files to import types from it instead of directly from @google/genai. A new delta.ts barrel exports re-exported types from @google/genai plus two new provider-agnostic types (DeltaModelCapabilities and DeltaProviderType). A roadmap document outlines the staged decoupling plan.

Changes

Cohort / File(s) Summary
Documentation
docs/roadmap/05-delta-types.md
New roadmap document describing the staged plan to decouple from @google/genai via Delta-native types, provider adapters, and interface migrations for ContentGenerator.
Type Definitions
packages/core/src/types/delta.ts
New barrel module re-exporting message, request/response, embedding, tool, schema, and enum types from @google/genai. Introduces new types: DeltaModelCapabilities interface and DeltaProviderType string union.
CLI Package - Main & Integration
packages/cli/src/nonInteractiveCli.ts, packages/cli/src/zed-integration/zedIntegration.ts
Updated imports of Content, Part, FunctionCall, and PartListUnion from @google/genai to local delta.ts module.
CLI Package - UI Types & Hooks
packages/cli/src/ui/commands/types.ts, packages/cli/src/ui/hooks/atCommandProcessor.ts, packages/cli/src/ui/hooks/shellCommandProcessor.ts, packages/cli/src/ui/hooks/slashCommandProcessor.ts, packages/cli/src/ui/hooks/useDeltaStream.ts
Updated type imports (Content, Part, PartListUnion, FinishReason) across multiple hook and type definition files to use delta.ts instead of @google/genai.
Core Package - Core Modules
packages/core/src/core/client.ts, packages/core/src/core/coreToolScheduler.ts, packages/core/src/core/deltaRequest.ts, packages/core/src/core/logger.ts, packages/core/src/core/subagent.ts, packages/core/src/core/turn.ts
Migrated imports of core types (PartListUnion, Content, GenerateContentConfig, FunctionDeclaration, FunctionCall, Part, GenerateContentResponse, FinishReason) from @google/genai to delta.ts.
Core Package - deltaChat (Bidirectional)
packages/core/src/core/deltaChat.ts
Moved SendMessageParameters and createUserContent from delta.ts to @google/genai; kept Part and Tool from delta.ts.
Telemetry & Test Utilities
packages/core/src/telemetry/types.ts, packages/core/src/test-utils/tools.ts
Updated GenerateContentResponseUsageMetadata, Schema, and Type imports from @google/genai to delta.ts.
Tool Files
packages/core/src/tools/checkpoint.ts, packages/core/src/tools/diffPreview.ts, packages/core/src/tools/fileSummary.ts, packages/core/src/tools/lint.ts, packages/core/src/tools/mcp-client.ts, packages/core/src/tools/mcp-tool.ts, packages/core/src/tools/memoryTool.ts, packages/core/src/tools/multiEdit.ts, packages/core/src/tools/read-file.ts, packages/core/src/tools/read-many-files.ts, packages/core/src/tools/repoMap.ts, packages/core/src/tools/runTests.ts, packages/core/src/tools/think.ts, packages/core/src/tools/todoWrite.ts, packages/core/src/tools/tool-registry.ts, packages/core/src/tools/tools.ts
Systematically updated FunctionDeclaration, PartListUnion, PartUnion, CallableTool, FunctionCall, and Part imports from @google/genai to delta.ts across all tool modules.
Utility Files
packages/core/src/utils/editCorrector.ts, packages/core/src/utils/environmentContext.ts, packages/core/src/utils/errorReporting.ts, packages/core/src/utils/fileUtils.ts, packages/core/src/utils/generateContentResponseUtilities.ts, packages/core/src/utils/messageInspectors.ts, packages/core/src/utils/nextSpeakerChecker.ts, packages/core/src/utils/partUtils.ts, packages/core/src/utils/summarizer.ts
Migrated Content, Part, PartListUnion, PartUnion, GenerateContentResponse, GenerateContentConfig, and FunctionCall imports from @google/genai to delta.ts across utility modules.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~28 minutes

Poem

🐰 Through files both great and small we hop,
Importing types from one new stop—
Delta's barrel, shiny and bright,
Decouples from Google's genai height!
Forty files refactored with care,
A cleaner codebase now to share! 🌟

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch refactor/delta-types

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.

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.

2 participants