mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-09 08:30:43 +00:00
154 lines
4.2 KiB
TypeScript
154 lines
4.2 KiB
TypeScript
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
|
import type {
|
|
TaskDeliveryState,
|
|
TaskDeliveryStatus,
|
|
TaskNotifyPolicy,
|
|
TaskRecord,
|
|
TaskRuntime,
|
|
TaskScopeKind,
|
|
TaskStatus,
|
|
TaskTerminalOutcome,
|
|
} from "./task-registry.types.js";
|
|
|
|
export type DetachedTaskCreateParams = {
|
|
runtime: TaskRuntime;
|
|
taskKind?: string;
|
|
sourceId?: string;
|
|
requesterSessionKey?: string;
|
|
ownerKey?: string;
|
|
scopeKind?: TaskScopeKind;
|
|
requesterOrigin?: TaskDeliveryState["requesterOrigin"];
|
|
parentFlowId?: string;
|
|
childSessionKey?: string;
|
|
parentTaskId?: string;
|
|
agentId?: string;
|
|
runId?: string;
|
|
label?: string;
|
|
task: string;
|
|
preferMetadata?: boolean;
|
|
notifyPolicy?: TaskNotifyPolicy;
|
|
deliveryStatus?: TaskDeliveryStatus;
|
|
};
|
|
|
|
export type DetachedRunningTaskCreateParams = DetachedTaskCreateParams & {
|
|
startedAt?: number;
|
|
lastEventAt?: number;
|
|
progressSummary?: string | null;
|
|
};
|
|
|
|
export type DetachedTaskStartParams = {
|
|
runId: string;
|
|
runtime?: TaskRuntime;
|
|
sessionKey?: string;
|
|
startedAt?: number;
|
|
lastEventAt?: number;
|
|
progressSummary?: string | null;
|
|
eventSummary?: string | null;
|
|
};
|
|
|
|
export type DetachedTaskProgressParams = {
|
|
runId: string;
|
|
runtime?: TaskRuntime;
|
|
sessionKey?: string;
|
|
lastEventAt?: number;
|
|
progressSummary?: string | null;
|
|
eventSummary?: string | null;
|
|
};
|
|
|
|
export type DetachedTaskCompleteParams = {
|
|
runId: string;
|
|
runtime?: TaskRuntime;
|
|
sessionKey?: string;
|
|
endedAt: number;
|
|
lastEventAt?: number;
|
|
progressSummary?: string | null;
|
|
terminalSummary?: string | null;
|
|
terminalOutcome?: TaskTerminalOutcome | null;
|
|
};
|
|
|
|
export type DetachedTaskFailParams = {
|
|
runId: string;
|
|
runtime?: TaskRuntime;
|
|
sessionKey?: string;
|
|
status?: Extract<TaskStatus, "failed" | "timed_out" | "cancelled">;
|
|
endedAt: number;
|
|
lastEventAt?: number;
|
|
error?: string;
|
|
progressSummary?: string | null;
|
|
terminalSummary?: string | null;
|
|
};
|
|
|
|
export type DetachedTaskFinalizeParams = {
|
|
runId: string;
|
|
runtime?: TaskRuntime;
|
|
sessionKey?: string;
|
|
status: Extract<TaskStatus, "succeeded" | "failed" | "timed_out" | "cancelled">;
|
|
endedAt: number;
|
|
lastEventAt?: number;
|
|
error?: string;
|
|
progressSummary?: string | null;
|
|
terminalSummary?: string | null;
|
|
terminalOutcome?: TaskTerminalOutcome | null;
|
|
};
|
|
|
|
export type DetachedTaskDeliveryStatusParams = {
|
|
runId: string;
|
|
runtime?: TaskRuntime;
|
|
sessionKey?: string;
|
|
deliveryStatus: TaskDeliveryStatus;
|
|
error?: string;
|
|
};
|
|
|
|
export type DetachedTaskCancelParams = {
|
|
cfg: OpenClawConfig;
|
|
taskId: string;
|
|
};
|
|
|
|
export type DetachedTaskCancelResult = {
|
|
found: boolean;
|
|
cancelled: boolean;
|
|
reason?: string;
|
|
task?: TaskRecord;
|
|
};
|
|
|
|
export type DetachedTaskRecoveryAttemptParams = {
|
|
taskId: string;
|
|
runtime: TaskRuntime;
|
|
task: TaskRecord;
|
|
now: number;
|
|
};
|
|
|
|
export type DetachedTaskRecoveryAttemptResult = {
|
|
recovered: boolean;
|
|
};
|
|
|
|
export type DetachedTaskLifecycleRuntime = {
|
|
createQueuedTaskRun: (params: DetachedTaskCreateParams) => TaskRecord;
|
|
createRunningTaskRun: (params: DetachedRunningTaskCreateParams) => TaskRecord;
|
|
startTaskRunByRunId: (params: DetachedTaskStartParams) => TaskRecord[];
|
|
recordTaskRunProgressByRunId: (params: DetachedTaskProgressParams) => TaskRecord[];
|
|
finalizeTaskRunByRunId?: (params: DetachedTaskFinalizeParams) => TaskRecord[];
|
|
completeTaskRunByRunId: (params: DetachedTaskCompleteParams) => TaskRecord[];
|
|
failTaskRunByRunId: (params: DetachedTaskFailParams) => TaskRecord[];
|
|
setDetachedTaskDeliveryStatusByRunId: (params: DetachedTaskDeliveryStatusParams) => TaskRecord[];
|
|
/**
|
|
* Return `found: false` when this runtime does not own the task so core can
|
|
* fall back to the legacy detached-task cancel path.
|
|
*/
|
|
cancelDetachedTaskRunById: (
|
|
params: DetachedTaskCancelParams,
|
|
) => Promise<DetachedTaskCancelResult>;
|
|
/**
|
|
* Give a registered detached runtime one last chance to recover a stale task
|
|
* before core marks it lost during maintenance.
|
|
*/
|
|
tryRecoverTaskBeforeMarkLost?: (
|
|
params: DetachedTaskRecoveryAttemptParams,
|
|
) => DetachedTaskRecoveryAttemptResult | Promise<DetachedTaskRecoveryAttemptResult>;
|
|
};
|
|
|
|
export type DetachedTaskLifecycleRuntimeRegistration = {
|
|
pluginId: string;
|
|
runtime: DetachedTaskLifecycleRuntime;
|
|
};
|