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
55 lines
1.6 KiB
TypeScript
55 lines
1.6 KiB
TypeScript
import type {
|
|
AgentHostAgentTargetSetupAction,
|
|
AgentHostAgentTargetSetupState
|
|
} from "../../host/agentHostApi.ts";
|
|
|
|
export interface AgentTargetSetupFailureNotification {
|
|
actionId: string;
|
|
actionKind: AgentHostAgentTargetSetupAction["kind"];
|
|
errorCode?: string;
|
|
errorMessage?: string;
|
|
kind: "action_failed";
|
|
}
|
|
|
|
export interface AgentTargetSetupFailureNotificationController {
|
|
observe(
|
|
state: AgentHostAgentTargetSetupState
|
|
): AgentTargetSetupFailureNotification | null;
|
|
}
|
|
|
|
export function createAgentTargetSetupFailureNotificationController(
|
|
initialState: AgentHostAgentTargetSetupState
|
|
): AgentTargetSetupFailureNotificationController {
|
|
let previousAction = initialState.snapshot?.action ?? null;
|
|
return {
|
|
observe(state) {
|
|
const action = state.snapshot?.action ?? null;
|
|
const priorAction = previousAction;
|
|
previousAction = action;
|
|
if (
|
|
!action ||
|
|
!isFailed(action.status) ||
|
|
priorAction?.actionId !== action.actionId ||
|
|
!isRunning(priorAction.status)
|
|
) {
|
|
return null;
|
|
}
|
|
return {
|
|
actionId: action.actionId,
|
|
actionKind: action.kind,
|
|
errorCode: action.errorCode?.trim() || undefined,
|
|
errorMessage: action.errorMessage?.trim() || undefined,
|
|
kind: "action_failed"
|
|
};
|
|
}
|
|
};
|
|
}
|
|
|
|
function isRunning(status: AgentHostAgentTargetSetupAction["status"]): boolean {
|
|
return status === "queued" || status === "running";
|
|
}
|
|
|
|
function isFailed(status: AgentHostAgentTargetSetupAction["status"]): boolean {
|
|
return status === "failed" || status === "interrupted";
|
|
}
|