import { injectGeneration } from './inject-generation' import { reconstructSummarizeResult } from '@tanstack/ai-client' import type { Signal } from '@angular/core' import type { SummarizationResult } from '@tanstack/ai' import type { GenerationClientState, GenerationPersistenceOptions, InferGenerationOutputFromReturn, SummarizeGenerateInput, } from '@tanstack/ai-client' import type { InjectGenerationOptions, InjectGenerationResult, } from './inject-generation' export type InjectSummarizeOptions = Omit< InjectGenerationOptions, 'onResult' | 'reconstructResult' > & { onResult?: (result: SummarizationResult) => TOutput | null | void } export interface InjectSummarizeResult< TOutput = SummarizationResult, > extends Omit, 'generate'> { generate: (input: SummarizeGenerateInput) => Promise result: Signal isLoading: Signal error: Signal status: Signal } export function injectSummarize( options: Omit< InjectSummarizeOptions, 'onResult' | 'persistence' | 'threadId' > & { onResult?: (result: SummarizationResult) => TTransformed } & GenerationPersistenceOptions, ): InjectSummarizeResult< InferGenerationOutputFromReturn > { const devtools = { ...options.devtools, framework: 'angular' as const, hookName: 'injectSummarize', outputKind: 'text' as const, } const generation = injectGeneration< SummarizeGenerateInput, SummarizationResult, TTransformed >({ ...options, devtools, reconstructResult: reconstructSummarizeResult, }) return generation }