Files
agent-radar 2ed3415fb7
Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
2026-09-01 20:17:27 +08:00

48 lines
1.6 KiB
TypeScript

import type {
AgentActivityEditRetryAvailability,
AgentActivityEditRetryRecoveryAction,
EditRetryOperationStatus
} from "@tutti-os/agent-activity-core";
export type AgentGUIEditRetryPresentationState =
| "ready"
| "processing"
| "needs_action";
export interface AgentGUIEditRetryPresentation {
state: AgentGUIEditRetryPresentationState;
editableTurnId: string | null;
operationId: string | null;
availableActions: readonly AgentActivityEditRetryRecoveryAction[];
reasonCode: AgentActivityEditRetryAvailability["reasonCode"] | null;
}
export function projectAgentGUIEditRetryPresentation(input: {
availability: AgentActivityEditRetryAvailability | null;
commandStatus: EditRetryOperationStatus;
}): AgentGUIEditRetryPresentation {
const availability = input.availability;
const processing =
input.commandStatus === "pending" ||
input.commandStatus === "reconciling" ||
availability?.recoveryState === "rolling_back";
const needsAction =
!processing &&
(availability?.recoveryState === "resend_pending" ||
availability?.recoveryState === "recovery_required" ||
(input.commandStatus === "failed" && availability?.eligible !== true));
return {
state: processing ? "processing" : needsAction ? "needs_action" : "ready",
editableTurnId:
!processing &&
!needsAction &&
availability?.supported === true &&
availability.eligible === true
? (availability.turnId ?? null)
: null,
operationId: availability?.operationId ?? null,
availableActions: availability?.availableActions ?? [],
reasonCode: availability?.reasonCode ?? null
};
}