60 lines
1.7 KiB
TypeScript
60 lines
1.7 KiB
TypeScript
import type { TeamTaskStatus } from "../state/contracts.ts";
|
|
import type { CrewActivityState, ModelRoutingState, UsageState } from "../state/types.ts";
|
|
|
|
export type CrewRuntimeKind = "scaffold" | "child-process" | "live-session";
|
|
export type CrewAgentStatus = "queued" | "running" | "waiting" | "completed" | "failed" | "cancelled" | "stopped";
|
|
|
|
export interface CrewAgentRecentTool {
|
|
tool: string;
|
|
args?: string;
|
|
endedAt: string;
|
|
}
|
|
|
|
export interface CrewAgentProgress {
|
|
currentTool?: string;
|
|
currentToolArgs?: string;
|
|
currentToolStartedAt?: string;
|
|
recentTools: CrewAgentRecentTool[];
|
|
recentOutput: string[];
|
|
toolCount: number;
|
|
tokens?: number;
|
|
turns?: number;
|
|
durationMs?: number;
|
|
lastActivityAt?: string;
|
|
activityState?: CrewActivityState;
|
|
failedTool?: string;
|
|
}
|
|
|
|
export interface CrewAgentRecord {
|
|
id: string;
|
|
runId: string;
|
|
taskId: string;
|
|
agent: string;
|
|
role: string;
|
|
runtime: CrewRuntimeKind;
|
|
status: CrewAgentStatus;
|
|
startedAt: string;
|
|
completedAt?: string;
|
|
resultArtifactPath?: string;
|
|
transcriptPath?: string;
|
|
statusPath?: string;
|
|
eventsPath?: string;
|
|
outputPath?: string;
|
|
toolUses?: number;
|
|
jsonEvents?: number;
|
|
model?: string;
|
|
routing?: ModelRoutingState;
|
|
usage?: UsageState;
|
|
progress?: CrewAgentProgress;
|
|
error?: string;
|
|
}
|
|
|
|
export function taskStatusToAgentStatus(status: TeamTaskStatus): CrewAgentStatus {
|
|
if (status === "completed") return "completed";
|
|
if (status === "failed") return "failed";
|
|
if (status === "cancelled" || status === "skipped") return "cancelled";
|
|
if (status === "running") return "running";
|
|
if (status === "waiting") return "waiting";
|
|
return "queued";
|
|
}
|