openclaw / src /plugins /runtime /runtime-managed-flow-result.ts
SaylorTwift's picture
SaylorTwift HF Staff
Add files using upload-large-folder tool
4c76b0d verified
Raw
History Blame Contribute Delete
2.3 kB
import type { RunTaskInFlowResult } from "../../tasks/task-flow-managed-run-task.types.js";
import type { TaskFlowRegistryUpdateResult } from "../../tasks/task-flow-registry.store.types.js";
import type { TaskFlowRecord } from "../../tasks/task-flow-registry.types.js";
import type { TaskFlowUpdateResult } from "../../tasks/task-flow-runtime-internal.js";
import type {
BoundTaskFlowRuntime,
ManagedTaskFlowMutationResult,
ManagedTaskFlowRecord,
} from "./runtime-taskflow.types.js";
function isManagedFlow(flow: TaskFlowRecord | undefined): flow is ManagedTaskFlowRecord {
return flow?.syncMode === "managed" && Boolean(flow.controllerId);
}
export function asManagedTaskFlowRecord(
flow: TaskFlowRecord | undefined,
): ManagedTaskFlowRecord | undefined {
return isManagedFlow(flow) ? flow : undefined;
}
export function mapFlowUpdateResult(
result:
| TaskFlowUpdateResult
| TaskFlowRegistryUpdateResult
| {
applied: false;
reason: "not_managed";
current: TaskFlowRecord;
},
): ManagedTaskFlowMutationResult {
if (result.applied) {
const managed = asManagedTaskFlowRecord(result.flow);
return managed
? { applied: true, flow: managed }
: { applied: false, code: "not_managed", current: result.flow };
}
if (result.reason === "invalid_patch") {
throw result.error;
}
return {
applied: false,
code: result.reason,
...("current" in result && result.current ? { current: result.current } : {}),
};
}
export function mapFlowTaskRunResult(
created: RunTaskInFlowResult,
): ReturnType<BoundTaskFlowRuntime["runTask"]> {
if (!created.created) {
return {
created: false,
found: created.found,
reason: created.reason ?? "Task was not created.",
...(created.flow ? { flow: created.flow } : {}),
};
}
const managed = asManagedTaskFlowRecord(created.flow);
if (!managed) {
return {
created: false,
found: true,
reason: "TaskFlow does not accept managed child tasks.",
flow: created.flow,
};
}
if (!created.task) {
return {
created: false,
found: true,
reason: "Task was not created.",
flow: created.flow,
};
}
return {
created: true,
flow: managed,
task: created.task,
};
}