Add 5 pi extensions: pi-subagents, pi-crew, rpiv-pi, pi-interactive-shell, pi-intercom

This commit is contained in:
2026-05-08 15:59:25 +10:00
parent d0d1d9b045
commit 31b4110c87
457 changed files with 85157 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
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";
}