"use client"; import { createExtractionClient, type ExtractionClient } from "@bytelyst/extraction"; import { EXTRACTION_SERVICE_URL, PRODUCT_ID } from "@/lib/product-config"; import { getAccessToken } from "@/lib/api-helpers"; import type { NoteTask } from "@/lib/types"; let _client: ExtractionClient | null = null; function getClient(): ExtractionClient { if (!_client) { _client = createExtractionClient({ baseUrl: EXTRACTION_SERVICE_URL, getToken: getAccessToken, }); } return _client; } function slugify(value: string): string { return value .toLowerCase() .replace(/[^a-z0-9]+/g, "-") .replace(/^-+|-+$/g, "") .slice(0, 64); } export async function extractSuggestedTasks(text: string): Promise { const response = await getClient().extract({ text, taskId: "transcript-extraction", productId: PRODUCT_ID, }); return response.extractions .filter((item) => item.extraction_class === "action_item" || item.extraction_class === "deadline") .map((item, index) => ({ id: `extract-${slugify(item.extraction_text)}-${index}`, title: item.extraction_text, status: "todo", source: "agent", })); }