import Ablo from '@abloatai/ablo';
import { defineSchema, model, z } from '@abloatai/ablo/schema';
const schema = defineSchema({
tasks: model({
title: z.string(),
status: z.enum(['todo', 'doing', 'done']),
summary: z.string().optional(),
}),
});
const ablo = Ablo({
schema,
apiKey: process.env.ABLO_API_KEY,
});
export async function completeTask(taskId: string) {
await ablo.ready();
// Claim grants exclusive, ordered access and hands back the fresh row.
await using claim = await ablo.tasks.claim({ id: taskId, action: 'update' });
if (!claim.data) return { status: 'not_found' };
const updated = await ablo.tasks.update({
id: taskId,
data: { status: 'done' },
wait: 'confirmed',
});
return { status: 'done', task: updated };
// claim auto-releases as the function returns
}