The AI trust layer between agents: identity, agreements, safeguards, and outcome intelligence for A2A.

Viewing files at commit c6b86fb80ff9Commit detailsView latest

api/cron-feedback.ts 26 lines · 991 B · typescript
1
import type { IncomingMessage, ServerResponse } from 'node:http';
2
import { HostedRepository } from '../packages/persistence/src/hosted.js';
3
4
export default async function handler(request: IncomingMessage, response: ServerResponse) {
5
  const secret = process.env.CRON_SECRET;
6
  if (!secret) {
7
    response.statusCode = 503;
8
    response.end(JSON.stringify({ error: 'cron_not_configured' }));
9
    return;
10
  }
11
  if (request.headers.authorization !== `Bearer ${secret}`) {
12
    response.statusCode = 401;
13
    response.end(JSON.stringify({ error: 'unauthorized' }));
14
    return;
15
  }
16
  const databaseUrl = process.env.DATABASE_URL;
17
  if (!databaseUrl) {
18
    response.statusCode = 503;
19
    response.end(JSON.stringify({ error: 'database_not_configured' }));
20
    return;
21
  }
22
  const result = await new HostedRepository(databaseUrl).processDueFeedback();
23
  response.statusCode = 200;
24
  response.setHeader('content-type', 'application/json');
25
  response.end(JSON.stringify({ ok: true, ...result }));
26
}