81 lines
2.1 KiB
TypeScript
81 lines
2.1 KiB
TypeScript
import type { InferSelectModel } from "drizzle-orm";
|
|
import type { missionActions } from "../db/schema.js";
|
|
|
|
export type MissionActionMode = "autonomous" | "approval_required" | "user_input_required" | "suggestion";
|
|
export type MissionActionStatus =
|
|
| "queued"
|
|
| "running"
|
|
| "waiting_approval"
|
|
| "waiting_user_input"
|
|
| "done"
|
|
| "failed"
|
|
| "dismissed"
|
|
| "snoozed";
|
|
export type MissionActionUrgency = "now" | "today" | "soon" | "calm";
|
|
|
|
export type MissionActionRow = InferSelectModel<typeof missionActions>;
|
|
|
|
export type MissionActionDto = {
|
|
id: string;
|
|
userId: string;
|
|
missionInstanceId: string;
|
|
missionId: string;
|
|
stageId?: string;
|
|
agentId: string;
|
|
agentName: string;
|
|
baseAgent?: string;
|
|
serviceId?: string;
|
|
toolName?: string;
|
|
mode: MissionActionMode;
|
|
status: MissionActionStatus;
|
|
title: string;
|
|
body: string;
|
|
prompt?: string;
|
|
payload: Record<string, unknown>;
|
|
result?: Record<string, unknown>;
|
|
error?: string;
|
|
sourceEventId?: string;
|
|
idempotencyKey?: string;
|
|
priority: number;
|
|
urgency: MissionActionUrgency;
|
|
dueAt?: string;
|
|
createdAt: string;
|
|
updatedAt: string;
|
|
resolvedAt?: string;
|
|
};
|
|
|
|
export type NewMissionActionInput = {
|
|
userId: string;
|
|
missionInstanceId: string;
|
|
missionId: string;
|
|
stageId?: string;
|
|
agentId: string;
|
|
agentName: string;
|
|
baseAgent?: string;
|
|
serviceId?: string;
|
|
toolName?: string;
|
|
mode: MissionActionMode;
|
|
status?: MissionActionStatus;
|
|
title: string;
|
|
body: string;
|
|
prompt?: string;
|
|
payload?: Record<string, unknown>;
|
|
result?: Record<string, unknown>;
|
|
error?: string;
|
|
sourceEventId?: string;
|
|
idempotencyKey?: string;
|
|
priority?: number;
|
|
urgency?: MissionActionUrgency;
|
|
dueAt?: Date | string;
|
|
};
|
|
|
|
export function defaultMissionActionStatus(mode: MissionActionMode): MissionActionStatus {
|
|
if (mode === "approval_required") return "waiting_approval";
|
|
if (mode === "user_input_required") return "waiting_user_input";
|
|
return "queued";
|
|
}
|
|
|
|
export function isOpenMissionActionStatus(status: MissionActionStatus) {
|
|
return status === "queued" || status === "running" || status === "waiting_approval" || status === "waiting_user_input" || status === "failed";
|
|
}
|