console.debug('Calling product agent to generate assets');
await Promise.race([
productAgent.generateText(
{ ...ctx, orgId: args.orgId, versionId: args.versionId },
{
userId,
},
{
// model: openrouter.chat('google/gemini-2.5-pro'),
messages: contextMessages,
stopWhen: stepCountIs(10), // Allow multiple tool calls for generating various assets
tools: {
generateNewAsset,
// getAssetDetails,
// listAssetsForVersion,
},
abortSignal: abortController.signal,
}
),
new Promise<never>((_, reject) => {
timeoutId = setTimeout(() => {
abortController.abort();
reject(
new ConvexError(
'Asset generation timed out after 500 seconds. Please try again.'
)
);
}, timeoutMs);
}),
]);
console.debug('Calling product agent to generate assets');
await Promise.race([
productAgent.generateText(
{ ...ctx, orgId: args.orgId, versionId: args.versionId },
{
userId,
},
{
// model: openrouter.chat('google/gemini-2.5-pro'),
messages: contextMessages,
stopWhen: stepCountIs(10), // Allow multiple tool calls for generating various assets
tools: {
generateNewAsset,
// getAssetDetails,
// listAssetsForVersion,
},
abortSignal: abortController.signal,
}
),
new Promise<never>((_, reject) => {
timeoutId = setTimeout(() => {
abortController.abort();
reject(
new ConvexError(
'Asset generation timed out after 500 seconds. Please try again.'
)
);
}, timeoutMs);
}),
]);