diff --git a/packages/embeddings/src/dataconnect-generated/index.ts b/packages/embeddings/src/dataconnect-generated/index.ts new file mode 100644 index 000000000..234c46ed4 --- /dev/null +++ b/packages/embeddings/src/dataconnect-generated/index.ts @@ -0,0 +1,45 @@ +/** + * Stub types for Firebase Data Connect SDK + * + * The real SDK is generated by `firebase dataconnect:sdk:generate`. + * These stubs allow the package to compile independently. + */ + +type UUID = `${string}-${string}-${string}-${string}-${string}`; + +interface VideoEmbeddingRow { + id: string; + segmentType: string; + segmentIndex: number; + content: string; + createdAt: string; + job?: { + id: string; + title?: string; + videoUrl?: string; + }; +} + +interface ListEmbeddingsResponse { + data: { videoEmbeddings: VideoEmbeddingRow[] }; +} + +interface GetJobEmbeddingsResponse { + data: { videoEmbeddings: VideoEmbeddingRow[] }; +} + +interface DeleteJobEmbeddingsResponse { + data: { videoEmbedding_deleteMany: number }; +} + +export declare function listEmbeddings(vars: { + limit: number; +}): Promise; + +export declare function getJobEmbeddings(vars: { + jobId: UUID; +}): Promise; + +export declare function deleteJobEmbeddings(vars: { + jobId: UUID; +}): Promise; diff --git a/packages/embeddings/src/embedding.ts b/packages/embeddings/src/embedding.ts index ea46b09d8..5b063951b 100644 --- a/packages/embeddings/src/embedding.ts +++ b/packages/embeddings/src/embedding.ts @@ -17,7 +17,7 @@ import { listEmbeddings, getJobEmbeddings, deleteJobEmbeddings, -} from "../dataconnect-generated"; +} from "./dataconnect-generated/index.js"; // ============================================================================= // Types @@ -108,7 +108,7 @@ export async function generateEmbedding(text: string): Promise { throw new Error(`Embedding API error: ${response.status} ${await response.text()}`); } - const data = await response.json(); + const data = (await response.json()) as { predictions: { embeddings: { values: number[] } }[] }; return data.predictions[0].embeddings.values; } @@ -134,8 +134,8 @@ export async function generateEmbeddings(texts: string[]): Promise { throw new Error(`Embedding API error: ${response.status} ${await response.text()}`); } - const data = await response.json(); - return data.predictions.map((p: { embeddings: { values: number[] } }) => p.embeddings.values); + const data = (await response.json()) as { predictions: { embeddings: { values: number[] } }[] }; + return data.predictions.map((p) => p.embeddings.values); } /** @@ -148,7 +148,7 @@ async function getAccessToken(): Promise { "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token", { headers: { "Metadata-Flavor": "Google" } } ); - const data = await response.json(); + const data = (await response.json()) as { access_token: string }; return data.access_token; }