mirror of
https://github.com/paperclipai/paperclip
synced 2026-03-25 11:21:48 +00:00
Add pending_approval agent status, permissions jsonb column, and AgentPermissions type with canCreateAgents flag. Add approval_comments table and ApprovalComment type. Extend approval statuses with revision_requested. Add validators for permission updates, approval revision requests, resubmission, and approval comments. Add requireBoardApprovalForNewAgents to company update schema. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
import { z } from "zod";
|
|
import { APPROVAL_TYPES } from "../constants.js";
|
|
|
|
export const createApprovalSchema = z.object({
|
|
type: z.enum(APPROVAL_TYPES),
|
|
requestedByAgentId: z.string().uuid().optional().nullable(),
|
|
payload: z.record(z.unknown()),
|
|
});
|
|
|
|
export type CreateApproval = z.infer<typeof createApprovalSchema>;
|
|
|
|
export const resolveApprovalSchema = z.object({
|
|
decisionNote: z.string().optional().nullable(),
|
|
decidedByUserId: z.string().optional().default("board"),
|
|
});
|
|
|
|
export type ResolveApproval = z.infer<typeof resolveApprovalSchema>;
|
|
|
|
export const requestApprovalRevisionSchema = z.object({
|
|
decisionNote: z.string().optional().nullable(),
|
|
decidedByUserId: z.string().optional().default("board"),
|
|
});
|
|
|
|
export type RequestApprovalRevision = z.infer<typeof requestApprovalRevisionSchema>;
|
|
|
|
export const resubmitApprovalSchema = z.object({
|
|
payload: z.record(z.unknown()).optional(),
|
|
});
|
|
|
|
export type ResubmitApproval = z.infer<typeof resubmitApprovalSchema>;
|
|
|
|
export const addApprovalCommentSchema = z.object({
|
|
body: z.string().min(1),
|
|
});
|
|
|
|
export type AddApprovalComment = z.infer<typeof addApprovalCommentSchema>;
|