@twick/ai-models
v0.15.24
Published
Provider adapters and orchestration types for Twick generative AI integration
Readme
@twick/ai-models
Provider adapters and orchestration primitives for Twick generative AI integrations.
What is included
- Provider adapter interface for generation workflows (caption, voice, avatar, media)
- Multi-provider orchestration with unified job status and fallback
- Job store interface with in-memory implementation
- Timeline injection helpers to normalize provider output into patch contracts
- Caption normalization helpers for legacy cloud payloads
- Types for
ModelInfo,AIModelProvider, and patch/result DTOs (apps supply model lists via services)
Core API
import {
ProviderRegistry,
GenerationOrchestrator,
InMemoryJobStore,
type ProviderAdapter,
toTimelinePatch,
} from "@twick/ai-models";
const registry = new ProviderRegistry();
const voiceAdapter: ProviderAdapter = /* your implementation */;
const avatarAdapter: ProviderAdapter = /* your implementation */;
registry.registerAdapter(voiceAdapter);
registry.registerAdapter(avatarAdapter);
registry.setProviderConfig({ provider: "your-provider", apiKey: process.env.API_KEY });
const orchestrator = new GenerationOrchestrator(registry, new InMemoryJobStore());
const voiceJob = await orchestrator.createJob({
type: "voice",
provider: "your-provider",
fallbackProviders: [],
input: {
text: "Welcome to this lesson.",
language: "en-US",
voiceId: "narrator-1",
},
});
const completed = await orchestrator.dispatch(voiceJob.id);
const patch = toTimelinePatch(completed);Why this matters
This provides a provider-agnostic backend layer so Twick apps can:
- Integrate different caption/voice/avatar/media APIs behind one contract
- Add fallback between providers without changing app-level flow
- Keep timeline/caption/export pipeline stable while swapping models
- Feed normalized patch data into
@twick/workflowfor project/timeline application
Notes
- Implement
ProviderAdapterfor each production provider (e.g. Sora, HeyGen, ElevenLabs). GenerationOrchestratoris backend-oriented and can run in cloud functions or Node services.
