/**
 * Text embedding — ai-assistant.
 *
 * Wraps the Cloudflare Workers AI `@cf/baai/bge-small-en-v1.5` model to produce
 * 384-dimensional float vectors for tenant data indexing and query retrieval.
 */
import type { Env } from '@zync/types'

/**
 * Embed a piece of text using Workers AI `@cf/baai/bge-small-en-v1.5`.
 * Returns the 384-dimensional float32 vector (result.data[0]).
 *
 * @throws if the Workers AI call fails or returns no data.
 */
export async function embedText(env: Env, text: string): Promise<number[]> {
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
  const result = await (env.AI as any).run('@cf/baai/bge-small-en-v1.5', {
    text: [text],
  }) as { data: number[][] }
  const vector = result.data[0]
  if (!vector || vector.length === 0) {
    throw new Error('embedText: Workers AI returned empty embedding')
  }
  return vector
}
