email-content-compose/src/lead-dataset.ts

40 lines
1.1 KiB
TypeScript

import type { LeadDatasetResponse } from './types.js';
import type { SkillClient } from '@clawd/auth-runtime';
/**
* Fetch lead-dataset from a completed cold-outreach workflow.
*/
export async function fetchLeadDataset(
client: SkillClient,
workflowId: string,
): Promise<{ data: LeadDatasetResponse | null; error: string }> {
const result = await client.get(`/ecom/cold-outreach/${workflowId}/lead-dataset`);
if (result.status < 200 || result.status >= 300) {
const msg = parseError(result.body);
return {
data: null,
error: msg || `lead-dataset fetch failed: HTTP ${result.status}`,
};
}
try {
const data = JSON.parse(result.body) as LeadDatasetResponse;
if (!data.success) {
return { data: null, error: data.message || 'lead-dataset returned success=false' };
}
return { data, error: '' };
} catch {
return { data: null, error: 'failed to parse lead-dataset response' };
}
}
function parseError(body: string): string {
try {
const data = JSON.parse(body);
return data.message || data.error || '';
} catch {
return '';
}
}