Skip to content

[Migration] Phase 1: Add AI SDK Dependencies #20

@aWN4Y25pa2EK

Description

@aWN4Y25pa2EK

Parent Epic

Part of #19 - Hybrid ADK + AI SDK Migration

Objective

Add Vercel AI SDK and OpenRouter provider packages, create the provider registry for multi-model routing.

Tasks

  • Add ai package to dependencies
  • Add @openrouter/ai-sdk-provider package to dependencies
  • Create src/providers/registry.ts with model presets
  • Add reasoning effort configuration to config.ts
  • Update ConfigSchema with AI SDK specific options

Implementation

Install Dependencies

bun add ai @openrouter/ai-sdk-provider

Create Provider Registry

New file: src/providers/registry.ts

import { createProviderRegistry, customProvider, wrapLanguageModel, defaultSettingsMiddleware } from 'ai';
import { createOpenRouter } from '@openrouter/ai-sdk-provider';
import { getConfig } from '../config.js';

const config = getConfig();
const openrouter = createOpenRouter({ 
  apiKey: config.openrouter.apiKey,
  baseURL: config.openrouter.baseUrl,
});

export const registry = createProviderRegistry({
  hca: customProvider({
    languageModels: {
      'boundary': openrouter(config.openrouter.stageModels.boundary),
      'gap': openrouter(config.openrouter.stageModels.gap),
      'navigation': openrouter(config.openrouter.stageModels.navigation),
      
      'decomposition': wrapLanguageModel({
        model: openrouter(`${config.openrouter.stageModels.decomposition}:thinking`),
        middleware: defaultSettingsMiddleware({
          settings: {
            providerOptions: {
              openrouter: { reasoning: { effort: 'high' } }
            }
          }
        })
      }),
      
      'deep-reason': wrapLanguageModel({
        model: openrouter('anthropic/claude-opus-4:thinking'),
        middleware: defaultSettingsMiddleware({
          settings: {
            providerOptions: {
              openrouter: { reasoning: { max_tokens: 16000 } }
            }
          }
        })
      }),
    },
    fallbackProvider: openrouter,
  })
});

Files to Create/Modify

  • package.json - Add dependencies
  • src/providers/registry.ts - New file
  • src/providers/index.ts - Export registry
  • src/config.ts - Add reasoning config options

Acceptance Criteria

  • bun install succeeds with new dependencies
  • registry.languageModel('hca:boundary') returns valid model
  • registry.languageModel('hca:decomposition') returns thinking-enabled model
  • TypeScript compiles without errors

Estimated Effort

1 day

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions