41 lines
1.2 KiB
TypeScript
41 lines
1.2 KiB
TypeScript
import { NextResponse } from 'next/server'
|
|
import { listApprovalTickets, listPolicyProposals } from '@/lib/agent-os/store'
|
|
import { requireAdminAccess } from '../_lib/auth'
|
|
|
|
export async function GET(request: Request) {
|
|
const auth = requireAdminAccess(request)
|
|
if (!auth.authorized) {
|
|
return auth.response
|
|
}
|
|
|
|
const proposals = listPolicyProposals()
|
|
const proposalById = new Map(proposals.map((proposal) => [proposal.id, proposal]))
|
|
const approvals = listApprovalTickets().map((ticket) => {
|
|
const proposal = proposalById.get(ticket.proposalId)
|
|
return {
|
|
approvalTicketId: ticket.id,
|
|
proposalId: ticket.proposalId,
|
|
approvalStatus: ticket.status,
|
|
requestedBy: ticket.requestedBy,
|
|
decidedBy: ticket.decidedBy || null,
|
|
decisionComment: ticket.decisionComment || null,
|
|
createdAt: ticket.createdAt,
|
|
updatedAt: ticket.updatedAt,
|
|
proposal: proposal
|
|
? {
|
|
title: proposal.title,
|
|
status: proposal.status,
|
|
targetType: proposal.targetType,
|
|
targetId: proposal.targetId,
|
|
}
|
|
: null,
|
|
}
|
|
})
|
|
|
|
return NextResponse.json({
|
|
success: true,
|
|
operator: auth.operator,
|
|
approvals,
|
|
})
|
|
}
|