import {accountRequest} from './accountRequest.js'; import {awaitWithAbort} from './abortable.js'; export const listAiJobs=ikn=>accountRequest('/api/me/ai-jobs?'+new URLSearchParams(ikn?{ikn}:{})); export const getAiJob=id=>accountRequest('/api/me/ai-jobs?'+new URLSearchParams({id})); export const cancelAiJob=id=>accountRequest('/api/me/ai-jobs?'+new URLSearchParams({id}),{method:'DELETE'}); export const retryAiJob=id=>accountRequest('/api/me/ai-jobs?'+new URLSearchParams({id}),{method:'POST',body:JSON.stringify({action:'retry'})}); export async function runDurableAiJob(operation,input,{signal,check,onProgress=()=>{},request=accountRequest,pollMs=1500}={}) { check(); const started=await request('/api/me/ai-jobs',{method:'POST',signal,body:JSON.stringify({operation,input,requestId:crypto.randomUUID()})}); let job=started.job; while(true) { check(); if(!job || !['queued','running','completed','failed','interrupted','cancelled'].includes(job.state))throw new Error('AI iş durumu geçersiz. Kayıtlı işler bölümünden kontrol edin.'); onProgress(job); if(job.state==='completed')return job.result; if(['failed','interrupted','cancelled'].includes(job.state))throw new Error(job.error || 'AI işi iptal edildi.'); let timer; try {await awaitWithAbort(new Promise(resolve=>{timer=setTimeout(resolve,pollMs);}),signal,()=>clearTimeout(timer));} finally {clearTimeout(timer);} check(); job=(await request('/api/me/ai-jobs?'+new URLSearchParams({id:job.id}),{signal})).job; } }