mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-10-01 02:04:24 +00:00
Remove the retry, rewind, fork and timeline endpoints and commands
The legacy executor replayed a run from a checkpoint; Petri resumes a
run from its records instead, and the checkpoint timeline, rewind, fork
and retry were the operations that replay carried. The server dropped
their handlers with the executor; this removes the rest:
- the API spec's `/runs/{id}/retry`, `/rewind`, `/fork` and `/timeline`
paths with the `ForkRequest`, `ForkResponse`, `RewindRequest`,
`RewindResponse` and `TimelineEntryResponse` schemas, and the
generated TypeScript models;
- `fabro rewind` and `fabro fork` (with the checkpoint timeline printer
and the repo-origin check only they used), their reference pages and
the checkpoints guide's rewind and fork sections;
- `fabro-client`'s `rewind_run`, `fork_run` and `run_timeline`;
- the web app's Retry action on the run list and the run page.
`Run.retried_from` stays on the run type: a run that was retried before
the cutover would still name its source.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
3e157d3356
commit
e8e681adbf
22 changed files with 21 additions and 997 deletions
|
|
@ -20,7 +20,6 @@ import {
|
|||
denyRun,
|
||||
isCancellationPendingState,
|
||||
mapError,
|
||||
retryRun,
|
||||
unarchiveRun,
|
||||
} from "../../lib/run-actions";
|
||||
import type { LifecycleAction } from "../../lib/run-actions";
|
||||
|
|
@ -44,7 +43,6 @@ export function RowActionsMenu({ run }: { run: RunWithStatus }) {
|
|||
const status = run.lifecycleStatus;
|
||||
const showApprove = run.pendingApproval === true;
|
||||
const showDeny = run.pendingApproval === true;
|
||||
const showRetry = status === "failed" || status === "dead";
|
||||
const showArchive = canArchive(status);
|
||||
const showUnarchive = canUnarchive(status);
|
||||
const showCancel = canCancel(status);
|
||||
|
|
@ -56,7 +54,7 @@ export function RowActionsMenu({ run }: { run: RunWithStatus }) {
|
|||
);
|
||||
const pending = pendingAction !== null || cancellationPending;
|
||||
|
||||
const hasLifecycle = showRetry || showArchive || showUnarchive;
|
||||
const hasLifecycle = showArchive || showUnarchive;
|
||||
const hasDestructive = showDeny || showCancel || showDelete;
|
||||
|
||||
async function runAction<T>(
|
||||
|
|
@ -162,20 +160,6 @@ export function RowActionsMenu({ run }: { run: RunWithStatus }) {
|
|||
</button>
|
||||
</MenuItem>
|
||||
)}
|
||||
{showRetry && (
|
||||
<MenuItem>
|
||||
<button
|
||||
type="button"
|
||||
onClick={() =>
|
||||
void runAction("retry", () => retryRun(run.id), "Retried run.")
|
||||
}
|
||||
disabled={pending}
|
||||
className={MENU_ITEM_CLASS}
|
||||
>
|
||||
Retry
|
||||
</button>
|
||||
</MenuItem>
|
||||
)}
|
||||
{showArchive && (
|
||||
<MenuItem>
|
||||
<button
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ import {
|
|||
cancelRun,
|
||||
denyRun,
|
||||
isLifecycleActionError,
|
||||
retryRun,
|
||||
unarchiveRun,
|
||||
} from "./run-actions";
|
||||
|
||||
|
|
@ -82,15 +81,6 @@ export function useUnarchiveRun(id: string | undefined) {
|
|||
return useLifecycleMutation(id, "unarchive", unarchiveRun);
|
||||
}
|
||||
|
||||
export function useRetryRun(id: string | undefined) {
|
||||
return useLifecycleMutation(id, "retry", retryRun, (run, mutate) => {
|
||||
void mutate(queryKeys.runs.detail(run.id), run, { revalidate: false });
|
||||
if (run.parent_id) {
|
||||
mutateRunListCaches(mutate);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function useLifecycleMutation(
|
||||
id: string | undefined,
|
||||
intent: LifecycleAction,
|
||||
|
|
@ -118,12 +108,10 @@ function useLifecycleMutation(
|
|||
{
|
||||
onSuccess: (result) => {
|
||||
if (!id || !result.ok) return;
|
||||
if (intent !== "retry") {
|
||||
// Keep the returned lifecycle state visible while revalidation
|
||||
// observes the durable follow-up event (notably a 202 cancel).
|
||||
void mutate(queryKeys.runs.detail(id), result.run, { revalidate: true });
|
||||
void mutate(queryKeys.runs.usage(id));
|
||||
}
|
||||
// Keep the returned lifecycle state visible while revalidation
|
||||
// observes the durable follow-up event (notably a 202 cancel).
|
||||
void mutate(queryKeys.runs.detail(id), result.run, { revalidate: true });
|
||||
void mutate(queryKeys.runs.usage(id));
|
||||
mutateRunListCaches(mutate);
|
||||
onSuccessExtra?.(result.run, mutate);
|
||||
},
|
||||
|
|
|
|||
|
|
@ -81,7 +81,6 @@ export const queryKeys = {
|
|||
cancel: (id: string) => ["runs", "cancel", id] as const,
|
||||
approve: (id: string) => ["runs", "approve", id] as const,
|
||||
deny: (id: string) => ["runs", "deny", id] as const,
|
||||
retry: (id: string) => ["runs", "retry", id] as const,
|
||||
archive: (id: string) => ["runs", "archive", id] as const,
|
||||
unarchive: (id: string) => ["runs", "unarchive", id] as const,
|
||||
updateTitle: (id: string) => ["runs", "update-title", id] as const,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,6 @@ import {
|
|||
canArchive,
|
||||
canApprove,
|
||||
canCancel,
|
||||
canRetry,
|
||||
canUnarchive,
|
||||
cancellationActionLabel,
|
||||
cancellationSuccessMessage,
|
||||
|
|
@ -24,7 +23,6 @@ import {
|
|||
isCancellationPending,
|
||||
isCancellationPendingState,
|
||||
mapError,
|
||||
retryRun,
|
||||
unarchiveRun,
|
||||
unarchiveRuns,
|
||||
} from "./run-actions";
|
||||
|
|
@ -350,22 +348,6 @@ describe("run lifecycle actions", () => {
|
|||
});
|
||||
});
|
||||
|
||||
test("retryRun parses a 201 response", async () => {
|
||||
stubGeneratedAxiosOnce({
|
||||
status: 201,
|
||||
body: {
|
||||
...makeRun({ kind: "submitted" }),
|
||||
id: "run-2",
|
||||
retried_from: "run-1",
|
||||
},
|
||||
});
|
||||
|
||||
const result = await retryRun("run-1");
|
||||
expect(result.id).toBe("run-2");
|
||||
expect(result.retried_from).toBe("run-1");
|
||||
expect(result.lifecycle.status.kind).toBe("submitted");
|
||||
});
|
||||
|
||||
test("404 and 409 preserve the parsed error envelope", async () => {
|
||||
stubGeneratedAxiosOnce({
|
||||
status: 404,
|
||||
|
|
@ -449,16 +431,6 @@ describe("run lifecycle actions", () => {
|
|||
expect(canApprove(makeRun({ kind: "runnable" }))).toBe(false);
|
||||
});
|
||||
|
||||
test("canRetry allows terminal runs except archived runs", () => {
|
||||
expect(canRetry(makeRun({ kind: "failed", reason: "workflow_error" }))).toBe(true);
|
||||
expect(canRetry(makeRun({ kind: "dead" }))).toBe(true);
|
||||
expect(canRetry(makeRun({ kind: "failed", reason: "cancelled" }))).toBe(true);
|
||||
expect(canRetry(makeRun({ kind: "succeeded", reason: "completed" }))).toBe(true);
|
||||
expect(canRetry(makeRun({ kind: "running" }))).toBe(false);
|
||||
expect(canRetry(makeRun({ kind: "failed", reason: "workflow_error" }, true))).toBe(false);
|
||||
expect(canRetry(makeRun({ kind: "succeeded", reason: "completed" }, true))).toBe(false);
|
||||
});
|
||||
|
||||
test("isTerminalCancelledRun distinguishes immediate cancel success from in-flight cancellation", () => {
|
||||
expect(
|
||||
isTerminalCancelledRun(makeRun({ kind: "failed", reason: "cancelled" })),
|
||||
|
|
|
|||
|
|
@ -23,8 +23,7 @@ export type LifecycleAction =
|
|||
| "approve"
|
||||
| "deny"
|
||||
| "archive"
|
||||
| "unarchive"
|
||||
| "retry";
|
||||
| "unarchive";
|
||||
|
||||
export interface LifecycleActionError {
|
||||
status: number;
|
||||
|
|
@ -118,10 +117,6 @@ export async function deleteRuns(
|
|||
}
|
||||
}
|
||||
|
||||
export async function retryRun(id: string, request?: Request): Promise<Run> {
|
||||
return runLifecycleAction(id, "retry", request);
|
||||
}
|
||||
|
||||
export async function deleteRun(id: string, request?: Request): Promise<void> {
|
||||
try {
|
||||
await apiResponse(() => runsApi.deleteRun(id, undefined, requestSignalOptions(request)));
|
||||
|
|
@ -147,11 +142,6 @@ export function canUnarchive(status: string | null | undefined): boolean {
|
|||
return status === "archived";
|
||||
}
|
||||
|
||||
export function canRetry(run: Pick<Run, "lifecycle"> | null | undefined): boolean {
|
||||
if (!run || run.lifecycle.archived) return false;
|
||||
return isTerminalRunStatus(run.lifecycle.status.kind);
|
||||
}
|
||||
|
||||
export function isTerminalRunStatus(
|
||||
status: string | null | undefined,
|
||||
): boolean {
|
||||
|
|
@ -223,8 +213,6 @@ export function mapError(error: unknown, action: LifecycleAction): string {
|
|||
return "Only terminal runs can be archived.";
|
||||
case "unarchive":
|
||||
return "Active runs can't be unarchived.";
|
||||
case "retry":
|
||||
return "This run can no longer be retried.";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -245,8 +233,6 @@ export function mapError(error: unknown, action: LifecycleAction): string {
|
|||
return "Couldn't archive the run right now. Try again.";
|
||||
case "unarchive":
|
||||
return "Couldn't unarchive the run right now. Try again.";
|
||||
case "retry":
|
||||
return "Couldn't retry the run right now. Try again.";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -267,8 +253,6 @@ async function runLifecycleAction(
|
|||
return await apiData(() => runsApi.archiveRun(id, requestSignalOptions(request)));
|
||||
case "unarchive":
|
||||
return await apiData(() => runsApi.unarchiveRun(id, requestSignalOptions(request)));
|
||||
case "retry":
|
||||
return await apiData(() => runsApi.retryRun(id, requestSignalOptions(request)));
|
||||
}
|
||||
} catch (error) {
|
||||
throw lifecycleActionErrorFromError(error);
|
||||
|
|
|
|||
|
|
@ -167,7 +167,6 @@ mock.module("../lib/mutations", () => ({
|
|||
useDenyRun: mutationState,
|
||||
useInterruptRun: mutationState,
|
||||
usePreviewRun: mutationState,
|
||||
useRetryRun: mutationState,
|
||||
useSteerRun: mutationState,
|
||||
useSubmitInterviewAnswer: mutationState,
|
||||
useUpdateRunTitle: mutationState,
|
||||
|
|
@ -535,7 +534,6 @@ describe("handleLifecycleToastResult", () => {
|
|||
deny: null,
|
||||
archive: null,
|
||||
unarchive: null,
|
||||
retry: null,
|
||||
},
|
||||
};
|
||||
|
||||
|
|
@ -608,7 +606,6 @@ describe("handleLifecycleToastResult", () => {
|
|||
deny: null,
|
||||
archive: null,
|
||||
unarchive: null,
|
||||
retry: null,
|
||||
},
|
||||
};
|
||||
|
||||
|
|
@ -678,63 +675,6 @@ describe("RunDetail full-height child routes", () => {
|
|||
expect(badges.map((badge) => badge.children.join(""))).toContain("7");
|
||||
});
|
||||
|
||||
test("successful retry result navigates to the new run once", () => {
|
||||
const pushed: Array<{ message: string; tone?: string }> = [];
|
||||
const navigated: string[] = [];
|
||||
const result: RunDetailActionResult = {
|
||||
intent: "retry",
|
||||
ok: true,
|
||||
run: {
|
||||
...makeRunSummary({ status: "runnable" }),
|
||||
id: "run_retry",
|
||||
retried_from: "run_1",
|
||||
},
|
||||
};
|
||||
const initialState: LifecycleToastState = {
|
||||
activeArchiveToastId: null,
|
||||
lastProcessed: {
|
||||
cancel: null,
|
||||
approve: null,
|
||||
deny: null,
|
||||
archive: null,
|
||||
unarchive: null,
|
||||
retry: null,
|
||||
},
|
||||
};
|
||||
|
||||
const next = handleLifecycleToastResult(
|
||||
"retry",
|
||||
result,
|
||||
initialState,
|
||||
{
|
||||
push: (toast) => {
|
||||
pushed.push(toast);
|
||||
return "toast-1";
|
||||
},
|
||||
dismiss: () => undefined,
|
||||
},
|
||||
(path) => navigated.push(path),
|
||||
);
|
||||
const replay = handleLifecycleToastResult(
|
||||
"retry",
|
||||
result,
|
||||
next,
|
||||
{
|
||||
push: (toast) => {
|
||||
pushed.push(toast);
|
||||
return "toast-2";
|
||||
},
|
||||
dismiss: () => undefined,
|
||||
},
|
||||
(path) => navigated.push(path),
|
||||
);
|
||||
|
||||
expect(next.lastProcessed.retry).toBe(result);
|
||||
expect(replay).toBe(next);
|
||||
expect(pushed).toEqual([{ message: "Retry started." }]);
|
||||
expect(navigated).toEqual(["/runs/run_retry"]);
|
||||
});
|
||||
|
||||
test("hides the Sandbox tab for a planned sandbox without an instance", async () => {
|
||||
currentRunState = {
|
||||
sandbox: {
|
||||
|
|
|
|||
|
|
@ -28,7 +28,6 @@ import {
|
|||
useDenyRun,
|
||||
useInterruptRun,
|
||||
usePreviewRun,
|
||||
useRetryRun,
|
||||
useUnarchiveRun,
|
||||
type LifecycleMutationResult,
|
||||
} from "../lib/mutations";
|
||||
|
|
@ -37,7 +36,6 @@ import { useRunToasts } from "../hooks/use-run-toasts";
|
|||
import { useRun, useRunQuestions, useRunState } from "../lib/queries";
|
||||
import {
|
||||
canApprove,
|
||||
canRetry,
|
||||
deleteErrorMessage,
|
||||
deleteRun,
|
||||
isCancellationPending,
|
||||
|
|
@ -113,7 +111,6 @@ export default function RunDetail({ params }: { params: { id: string } }) {
|
|||
const denyMutation = useDenyRun(params.id);
|
||||
const archiveMutation = useArchiveRun(params.id);
|
||||
const unarchiveMutation = useUnarchiveRun(params.id);
|
||||
const retryMutation = useRetryRun(params.id);
|
||||
const interruptMutation = useInterruptRun(params.id);
|
||||
const navigate = useNavigate();
|
||||
const { mutate } = useSWRConfig();
|
||||
|
|
@ -160,10 +157,9 @@ export default function RunDetail({ params }: { params: { id: string } }) {
|
|||
result,
|
||||
lifecycleToastStateRef,
|
||||
{ push, dismiss },
|
||||
intent === "retry" ? navigate : undefined,
|
||||
);
|
||||
},
|
||||
[dismiss, navigate, push],
|
||||
[dismiss, push],
|
||||
);
|
||||
const triggerLifecycleAction = useCallback(
|
||||
async (intent: LifecycleAction, trigger: LifecycleTrigger) => {
|
||||
|
|
@ -205,7 +201,6 @@ export default function RunDetail({ params }: { params: { id: string } }) {
|
|||
const denyPending = denyMutation.isMutating;
|
||||
const archivePending = archiveMutation.isMutating;
|
||||
const unarchivePending = unarchiveMutation.isMutating;
|
||||
const retryPending = retryMutation.isMutating;
|
||||
const handlePreview = async () => {
|
||||
const previewWindow = window.open("about:blank", "_blank");
|
||||
try {
|
||||
|
|
@ -284,15 +279,6 @@ export default function RunDetail({ params }: { params: { id: string } }) {
|
|||
},
|
||||
],
|
||||
lifecycle: [
|
||||
...(!demoMode && canRetry(summary)
|
||||
? [{
|
||||
key: "retry",
|
||||
label: "Retry",
|
||||
pendingLabel: "Retrying…",
|
||||
pending: retryPending,
|
||||
onSelect: () => void triggerLifecycleAction("retry", retryMutation.trigger),
|
||||
}]
|
||||
: []),
|
||||
...(visibility.showArchive
|
||||
? [{
|
||||
key: "archive",
|
||||
|
|
|
|||
|
|
@ -34,7 +34,6 @@ export function createLifecycleToastState(): LifecycleToastState {
|
|||
deny: null,
|
||||
archive: null,
|
||||
unarchive: null,
|
||||
retry: null,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
|
@ -44,14 +43,12 @@ export function updateLifecycleToastState(
|
|||
result: RunDetailActionResult | undefined,
|
||||
stateRef: { current: LifecycleToastState },
|
||||
toastApi: ToastApi,
|
||||
navigate?: (path: string) => void,
|
||||
) {
|
||||
stateRef.current = handleLifecycleToastResult(
|
||||
intent,
|
||||
result,
|
||||
stateRef.current,
|
||||
toastApi,
|
||||
navigate,
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -75,7 +72,6 @@ export function handleLifecycleToastResult(
|
|||
result: RunDetailActionResult | undefined,
|
||||
state: LifecycleToastState,
|
||||
toastApi: ToastApi,
|
||||
navigate?: (path: string) => void,
|
||||
): LifecycleToastState {
|
||||
if (!result || result.intent !== intent) return state;
|
||||
if (state.lastProcessed[intent] === result) return state;
|
||||
|
|
@ -107,12 +103,6 @@ export function handleLifecycleToastResult(
|
|||
return nextState;
|
||||
}
|
||||
|
||||
if (intent === "retry") {
|
||||
toastApi.push({ message: "Retry started." });
|
||||
navigate?.(`/runs/${result.run.id}`);
|
||||
return nextState;
|
||||
}
|
||||
|
||||
if (state.activeArchiveToastId) {
|
||||
toastApi.dismiss(state.activeArchiveToastId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2181,44 +2181,6 @@ paths:
|
|||
schema:
|
||||
$ref: "#/components/schemas/ErrorResponse"
|
||||
|
||||
/api/v1/runs/{id}/retry:
|
||||
post:
|
||||
operationId: retryRun
|
||||
tags: [Runs]
|
||||
summary: Retry Run
|
||||
description: >
|
||||
Creates a fresh run from the terminal source run's captured
|
||||
durable definition, records `retried_from` on the new run, and schedules
|
||||
it for execution. The source run is left unchanged. Active and archived
|
||||
runs are not retryable.
|
||||
parameters:
|
||||
- $ref: "#/components/parameters/RunId"
|
||||
responses:
|
||||
"201":
|
||||
description: New retry run created and scheduled for execution
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/Run"
|
||||
"404":
|
||||
description: Run not found
|
||||
headers:
|
||||
x-request-id:
|
||||
$ref: "#/components/headers/XRequestId"
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/ErrorResponse"
|
||||
"409":
|
||||
description: Source run is not retryable
|
||||
headers:
|
||||
x-request-id:
|
||||
$ref: "#/components/headers/XRequestId"
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/ErrorResponse"
|
||||
|
||||
/api/v1/runs/{id}/pause:
|
||||
post:
|
||||
operationId: pauseRun
|
||||
|
|
@ -2325,172 +2287,6 @@ paths:
|
|||
schema:
|
||||
$ref: "#/components/schemas/ErrorResponse"
|
||||
|
||||
/api/v1/runs/{id}/rewind:
|
||||
post:
|
||||
operationId: rewindRun
|
||||
tags: [Runs]
|
||||
summary: Rewind Run
|
||||
description: >
|
||||
Creates a new run from an earlier checkpoint of a terminal source run,
|
||||
archives the source run, and records `run.superseded_by` on the source
|
||||
after archive succeeds. Returns 207 when the new run was created but
|
||||
the source archive step failed.
|
||||
parameters:
|
||||
- $ref: "#/components/parameters/RunId"
|
||||
requestBody:
|
||||
required: false
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/RewindRequest"
|
||||
responses:
|
||||
"200":
|
||||
description: Source archived and new run created
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/RewindResponse"
|
||||
"207":
|
||||
description: New run created but source archive failed
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/RewindResponse"
|
||||
"400":
|
||||
description: Invalid rewind target
|
||||
headers:
|
||||
x-request-id:
|
||||
$ref: "#/components/headers/XRequestId"
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/ErrorResponse"
|
||||
"404":
|
||||
description: Run not found
|
||||
headers:
|
||||
x-request-id:
|
||||
$ref: "#/components/headers/XRequestId"
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/ErrorResponse"
|
||||
"409":
|
||||
description: Source run is archived or is not terminal
|
||||
headers:
|
||||
x-request-id:
|
||||
$ref: "#/components/headers/XRequestId"
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/ErrorResponse"
|
||||
"501":
|
||||
description: Operation unsupported for this run
|
||||
headers:
|
||||
x-request-id:
|
||||
$ref: "#/components/headers/XRequestId"
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/ErrorResponse"
|
||||
|
||||
/api/v1/runs/{id}/fork:
|
||||
post:
|
||||
operationId: forkRun
|
||||
tags: [Runs]
|
||||
summary: Fork Run
|
||||
description: >
|
||||
Creates a new run from a checkpoint of the source run. The source run
|
||||
is left untouched.
|
||||
parameters:
|
||||
- $ref: "#/components/parameters/RunId"
|
||||
requestBody:
|
||||
required: false
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/ForkRequest"
|
||||
responses:
|
||||
"200":
|
||||
description: New run created
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/ForkResponse"
|
||||
"400":
|
||||
description: Invalid fork target
|
||||
headers:
|
||||
x-request-id:
|
||||
$ref: "#/components/headers/XRequestId"
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/ErrorResponse"
|
||||
"404":
|
||||
description: Run not found
|
||||
headers:
|
||||
x-request-id:
|
||||
$ref: "#/components/headers/XRequestId"
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/ErrorResponse"
|
||||
"409":
|
||||
description: Source run is archived
|
||||
headers:
|
||||
x-request-id:
|
||||
$ref: "#/components/headers/XRequestId"
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/ErrorResponse"
|
||||
"501":
|
||||
description: Operation unsupported for this run
|
||||
headers:
|
||||
x-request-id:
|
||||
$ref: "#/components/headers/XRequestId"
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/ErrorResponse"
|
||||
|
||||
/api/v1/runs/{id}/timeline:
|
||||
get:
|
||||
operationId: getRunTimeline
|
||||
tags: [Runs]
|
||||
summary: Get Run Timeline
|
||||
description: >
|
||||
Returns checkpoint timeline entries from durable run-store checkpoints.
|
||||
Metadata branches are write-only archives and are not read by this endpoint.
|
||||
parameters:
|
||||
- $ref: "#/components/parameters/RunId"
|
||||
responses:
|
||||
"200":
|
||||
description: Run checkpoint timeline
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/components/schemas/TimelineEntryResponse"
|
||||
"404":
|
||||
description: Run not found
|
||||
headers:
|
||||
x-request-id:
|
||||
$ref: "#/components/headers/XRequestId"
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/ErrorResponse"
|
||||
"501":
|
||||
description: Operation unsupported for this run
|
||||
headers:
|
||||
x-request-id:
|
||||
$ref: "#/components/headers/XRequestId"
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/ErrorResponse"
|
||||
|
||||
/api/v1/runs/{id}/unarchive:
|
||||
post:
|
||||
operationId: unarchiveRun
|
||||
|
|
@ -13535,82 +13331,6 @@ components:
|
|||
type: ["string", "null"]
|
||||
format: uri
|
||||
|
||||
ForkRequest:
|
||||
description: Request body for creating a new run from a source run checkpoint.
|
||||
type: object
|
||||
properties:
|
||||
target:
|
||||
type: ["string", "null"]
|
||||
description: Optional checkpoint target such as `@2`, `build`, or `build@1`. Defaults to the latest checkpoint.
|
||||
|
||||
ForkResponse:
|
||||
description: Response returned after creating a forked run.
|
||||
type: object
|
||||
required:
|
||||
- source_run_id
|
||||
- new_run_id
|
||||
- target
|
||||
properties:
|
||||
source_run_id:
|
||||
type: string
|
||||
new_run_id:
|
||||
type: string
|
||||
target:
|
||||
type: string
|
||||
|
||||
RewindRequest:
|
||||
description: Request body for creating a replacement run from a source run checkpoint.
|
||||
type: object
|
||||
properties:
|
||||
target:
|
||||
type: ["string", "null"]
|
||||
description: Optional checkpoint target such as `@2`, `build`, or `build@1`. Defaults to the latest checkpoint.
|
||||
|
||||
RewindResponse:
|
||||
description: Response returned after rewind creates a new run.
|
||||
type: object
|
||||
required:
|
||||
- source_run_id
|
||||
- new_run_id
|
||||
- target
|
||||
- archived
|
||||
properties:
|
||||
source_run_id:
|
||||
type: string
|
||||
new_run_id:
|
||||
type: string
|
||||
target:
|
||||
type: string
|
||||
archived:
|
||||
type: boolean
|
||||
archive_error:
|
||||
type: ["string", "null"]
|
||||
|
||||
TimelineEntryResponse:
|
||||
description: Checkpoint timeline entry for a run.
|
||||
type: object
|
||||
required:
|
||||
- ordinal
|
||||
- node_name
|
||||
- visit
|
||||
- checkpoint_seq
|
||||
properties:
|
||||
ordinal:
|
||||
type: integer
|
||||
minimum: 1
|
||||
node_name:
|
||||
type: string
|
||||
visit:
|
||||
type: integer
|
||||
minimum: 1
|
||||
checkpoint_seq:
|
||||
type: integer
|
||||
minimum: 1
|
||||
run_commit_sha:
|
||||
type: ["string", "null"]
|
||||
|
||||
# ── Run Board Schemas ────────────────────────────────────────────────
|
||||
|
||||
BoardColumn:
|
||||
description: |
|
||||
Status bucket for a run, shared by list and kanban renderings and by
|
||||
|
|
|
|||
|
|
@ -147,46 +147,6 @@ fabro events 01JKXYZ
|
|||
fabro dump 01JKXYZ --output ./run-dump
|
||||
```
|
||||
|
||||
## Rewinding to an earlier checkpoint
|
||||
|
||||
If a later stage goes off-track, you can rewind a terminal run to an earlier checkpoint and resume from there instead of restarting the entire workflow. Rewind creates a replacement run at the target checkpoint, archives the source run, and prints the new run ID to resume:
|
||||
|
||||
```bash
|
||||
# List the checkpoint timeline
|
||||
fabro rewind <RUN_ID> --list
|
||||
|
||||
# Rewind to a specific checkpoint
|
||||
fabro rewind <RUN_ID> plan@2
|
||||
|
||||
# Resume from the rewound point
|
||||
fabro resume <NEW_RUN_ID>
|
||||
```
|
||||
|
||||
The source run must already be terminal (`succeeded`, `failed`, or `dead`). If the source is archived, unarchive it first. If archive fails after the replacement run is created, do not retry `fabro rewind`; archive the source run manually.
|
||||
|
||||
See [`fabro rewind`](/reference/cli#fabro-rewind) for the full command reference.
|
||||
|
||||
## Forking a run
|
||||
|
||||
If you want to explore an alternate path from a checkpoint without archiving the original run, use `fabro fork` instead of `fabro rewind`. Fork creates a new independent run branching from the target checkpoint; the original run stays intact.
|
||||
|
||||
```bash
|
||||
# List checkpoints
|
||||
fabro fork <RUN_ID> --list
|
||||
|
||||
# Fork from a specific checkpoint
|
||||
fabro fork <RUN_ID> plan@2
|
||||
|
||||
# Resume the forked run
|
||||
fabro resume <NEW_RUN_ID>
|
||||
```
|
||||
|
||||
Use **rewind** when a terminal run should be abandoned and replaced from an earlier point. Use **fork** when you want to try a different approach while keeping the original run as a reference.
|
||||
|
||||
`fabro rewind --list`, `fabro fork --list`, `fabro rewind`, and `fabro fork` are server-backed. Timeline listing reads checkpoints from the durable run store.
|
||||
|
||||
See [`fabro fork`](/reference/cli#fabro-fork) for the full command reference.
|
||||
|
||||
## When checkpointing is active
|
||||
|
||||
Git checkpointing activates automatically when:
|
||||
|
|
|
|||
|
|
@ -77,7 +77,6 @@ fabro [OPTIONS] [COMMAND]
|
|||
| `fabro doctor` | Check environment and integration health |
|
||||
| `fabro dump` | Export a run's durable state to a directory |
|
||||
| `fabro events` | View the event log of a workflow run |
|
||||
| `fabro fork` | Fork a workflow run from an earlier checkpoint into a new run |
|
||||
| `fabro graph` | Render a workflow graph as SVG |
|
||||
| `fabro inspect` | Show detailed information about a workflow run |
|
||||
| `fabro install` | Set up the Fabro environment (LLMs, certs, GitHub) |
|
||||
|
|
@ -90,7 +89,6 @@ fabro [OPTIONS] [COMMAND]
|
|||
| `fabro provider` | Provider operations |
|
||||
| `fabro repo` | Repository commands |
|
||||
| `fabro resume` | Resume an interrupted workflow run |
|
||||
| `fabro rewind` | Rewind a workflow run to an earlier checkpoint |
|
||||
| `fabro rm` | Remove one or more workflow runs |
|
||||
| `fabro run` | Register a workflow version, create a run, and start it |
|
||||
| `fabro sandbox` | Sandbox operations (cp, ssh, preview) |
|
||||
|
|
@ -466,28 +464,6 @@ fabro events [OPTIONS] <RUN>
|
|||
| `--since <since>` | Events since timestamp or relative (e.g. "42m", "2h", "2026-01-02T13:00:00Z") |
|
||||
| `-n, --tail <tail>` | Lines from end (default: all) |
|
||||
|
||||
### `fabro fork`
|
||||
|
||||
Fork a workflow run from an earlier checkpoint into a new run
|
||||
|
||||
```bash
|
||||
fabro fork [OPTIONS] <RUN_ID> [TARGET]
|
||||
```
|
||||
|
||||
#### Arguments
|
||||
|
||||
| Name | Description |
|
||||
| --- | --- |
|
||||
| `RUN_ID` | Run ID (or unambiguous prefix) |
|
||||
| `TARGET` | Target checkpoint: node name, node@visit, or @ordinal (omit to fork from latest) |
|
||||
|
||||
#### Options
|
||||
|
||||
| Option | Description |
|
||||
| --- | --- |
|
||||
| `--list` | Show the checkpoint timeline instead of forking |
|
||||
| `--server <server>` | Fabro server target: http(s) URL or absolute Unix socket path |
|
||||
|
||||
### `fabro graph`
|
||||
|
||||
Render a workflow graph as SVG
|
||||
|
|
@ -1022,28 +998,6 @@ fabro resume [OPTIONS] <RUN>
|
|||
| `-d, --detach` | Run in the background and print the run ID |
|
||||
| `--server <server>` | Fabro server target: http(s) URL or absolute Unix socket path |
|
||||
|
||||
### `fabro rewind`
|
||||
|
||||
Rewind a workflow run to an earlier checkpoint
|
||||
|
||||
```bash
|
||||
fabro rewind [OPTIONS] <RUN_ID> [TARGET]
|
||||
```
|
||||
|
||||
#### Arguments
|
||||
|
||||
| Name | Description |
|
||||
| --- | --- |
|
||||
| `RUN_ID` | Run ID (or unambiguous prefix) |
|
||||
| `TARGET` | Target checkpoint: node name, node@visit, or @ordinal (omit with --list) |
|
||||
|
||||
#### Options
|
||||
|
||||
| Option | Description |
|
||||
| --- | --- |
|
||||
| `--list` | Show the checkpoint timeline instead of rewinding |
|
||||
| `--server <server>` | Fabro server target: http(s) URL or absolute Unix socket path |
|
||||
|
||||
### `fabro rm`
|
||||
|
||||
Remove one or more workflow runs
|
||||
|
|
|
|||
|
|
@ -758,39 +758,6 @@ pub(crate) struct ResumeArgs {
|
|||
pub(crate) detach: bool,
|
||||
}
|
||||
|
||||
#[derive(Debug, Args)]
|
||||
pub(crate) struct RewindArgs {
|
||||
#[command(flatten)]
|
||||
pub(crate) server: ServerTargetArgs,
|
||||
|
||||
/// Run ID (or unambiguous prefix)
|
||||
pub(crate) run_id: String,
|
||||
|
||||
/// Target checkpoint: node name, node@visit, or @ordinal (omit with --list)
|
||||
pub(crate) target: Option<String>,
|
||||
|
||||
/// Show the checkpoint timeline instead of rewinding
|
||||
#[arg(long)]
|
||||
pub(crate) list: bool,
|
||||
}
|
||||
|
||||
#[derive(Debug, Args)]
|
||||
pub(crate) struct ForkArgs {
|
||||
#[command(flatten)]
|
||||
pub(crate) server: ServerTargetArgs,
|
||||
|
||||
/// Run ID (or unambiguous prefix)
|
||||
pub(crate) run_id: String,
|
||||
|
||||
/// Target checkpoint: node name, node@visit, or @ordinal (omit to fork from
|
||||
/// latest)
|
||||
pub(crate) target: Option<String>,
|
||||
|
||||
/// Show the checkpoint timeline instead of forking
|
||||
#[arg(long)]
|
||||
pub(crate) list: bool,
|
||||
}
|
||||
|
||||
#[derive(Args)]
|
||||
pub(crate) struct WaitArgs {
|
||||
#[command(flatten)]
|
||||
|
|
@ -1300,10 +1267,6 @@ pub(crate) enum RunCommands {
|
|||
Logs(LogsArgs),
|
||||
/// Resume an interrupted workflow run
|
||||
Resume(ResumeArgs),
|
||||
/// Rewind a workflow run to an earlier checkpoint
|
||||
Rewind(RewindArgs),
|
||||
/// Fork a workflow run from an earlier checkpoint into a new run
|
||||
Fork(ForkArgs),
|
||||
/// Block until a workflow run completes
|
||||
Wait(WaitArgs),
|
||||
/// Steer a running agent mid-execution
|
||||
|
|
@ -1324,10 +1287,8 @@ impl RunCommands {
|
|||
Self::Events(_) => "events",
|
||||
Self::Logs(_) => "logs",
|
||||
Self::Resume(_) => "resume",
|
||||
Self::Rewind(_) => "rewind",
|
||||
Self::Steer(_) => "steer",
|
||||
Self::Ask(_) => "ask",
|
||||
Self::Fork(_) => "fork",
|
||||
Self::Wait(_) => "wait",
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,13 +10,11 @@ use crate::sleep_inhibitor;
|
|||
|
||||
pub(crate) mod ask;
|
||||
pub(crate) mod attach;
|
||||
pub(crate) mod checkpoints;
|
||||
pub(crate) mod command;
|
||||
pub(crate) mod cp;
|
||||
pub(crate) mod create;
|
||||
pub(crate) mod diff;
|
||||
pub(crate) mod events;
|
||||
pub(crate) mod fork;
|
||||
pub(crate) mod logs;
|
||||
pub(crate) mod output;
|
||||
pub(crate) mod overrides;
|
||||
|
|
@ -26,7 +24,6 @@ pub(crate) mod preview;
|
|||
mod remote_workflow;
|
||||
mod resolution;
|
||||
pub(crate) mod resume;
|
||||
pub(crate) mod rewind;
|
||||
pub(crate) mod run_progress;
|
||||
pub(crate) mod runner;
|
||||
mod selection;
|
||||
|
|
@ -139,14 +136,6 @@ pub(crate) async fn dispatch(
|
|||
};
|
||||
Box::pin(resume::resume_command(args, styles, base_ctx)).await
|
||||
}
|
||||
RunCommands::Rewind(args) => {
|
||||
let styles = Styles::detect_stderr();
|
||||
Box::pin(rewind::run(&args, &styles, base_ctx)).await
|
||||
}
|
||||
RunCommands::Fork(args) => {
|
||||
let styles = Styles::detect_stderr();
|
||||
Box::pin(fork::run(&args, &styles, base_ctx)).await
|
||||
}
|
||||
RunCommands::Wait(args) => {
|
||||
let styles = Styles::detect_stderr();
|
||||
wait::run(&args, &styles, base_ctx).await
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
pub(crate) mod provider_auth;
|
||||
pub(crate) mod repo;
|
||||
mod utilities;
|
||||
|
||||
pub(crate) use utilities::*;
|
||||
|
|
|
|||
|
|
@ -19,8 +19,6 @@ fn help() {
|
|||
events View the event log of a workflow run
|
||||
logs View the raw worker tracing log of a workflow run
|
||||
resume Resume an interrupted workflow run
|
||||
rewind Rewind a workflow run to an earlier checkpoint
|
||||
fork Fork a workflow run from an earlier checkpoint into a new run
|
||||
wait Block until a workflow run completes
|
||||
steer Steer a running agent mid-execution
|
||||
ask Ask Fabro a read-only question about a run
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ mod dump;
|
|||
mod events;
|
||||
mod exec;
|
||||
mod fabro;
|
||||
mod fork;
|
||||
mod graph;
|
||||
mod inspect;
|
||||
mod install;
|
||||
|
|
@ -44,7 +43,6 @@ mod repo;
|
|||
mod repo_deinit;
|
||||
mod repo_init;
|
||||
mod resume;
|
||||
mod rewind;
|
||||
mod rm;
|
||||
mod run;
|
||||
mod runner;
|
||||
|
|
|
|||
|
|
@ -57,8 +57,7 @@ pub(crate) struct RunSetup {
|
|||
}
|
||||
|
||||
pub(crate) struct SeededGitRunSetup {
|
||||
pub(crate) run: RunSetup,
|
||||
pub(crate) step_one_sha: String,
|
||||
pub(crate) run: RunSetup,
|
||||
}
|
||||
|
||||
pub(crate) struct ProjectFixture {
|
||||
|
|
@ -882,13 +881,6 @@ pub(crate) fn run_state(run_dir: &Path) -> RunProjection {
|
|||
))
|
||||
}
|
||||
|
||||
pub(crate) fn run_state_by_id(context: &TestContext, run_id: &str) -> RunProjection {
|
||||
block_on(get_server_json_for_storage(
|
||||
&context.storage_dir,
|
||||
&format!("/api/v1/runs/{run_id}/state"),
|
||||
))
|
||||
}
|
||||
|
||||
pub(crate) fn run_events(run_dir: &Path) -> Vec<EventEnvelope> {
|
||||
let run_id = infer_run_id(run_dir);
|
||||
let response: serde_json::Value = block_on(get_server_json(
|
||||
|
|
@ -993,10 +985,7 @@ async fn seed_git_backed_changed_run(context: &TestContext) -> SeededGitRunSetup
|
|||
)
|
||||
.await;
|
||||
|
||||
SeededGitRunSetup {
|
||||
run,
|
||||
step_one_sha: step_one_sha.to_string(),
|
||||
}
|
||||
SeededGitRunSetup { run }
|
||||
}
|
||||
|
||||
async fn seed_git_backed_noop_run(context: &TestContext) -> RunSetup {
|
||||
|
|
|
|||
|
|
@ -31,22 +31,21 @@ pub use fabro_api::types::{
|
|||
CreateCompletionRequest, CreateRunPullRequestRequest, CreateSecretRequest,
|
||||
CreateVariableRequest, DeleteRunResponse, DeleteRunSandbox, DeleteSecretRequest,
|
||||
DenyRunRequest, DiskUsageResponse, DiskUsageRunRow, DiskUsageSummaryRow, ErrorResponseEntry,
|
||||
ForkRequest, ForkResponse, IntegrationConnectionKind, IntegrationConnectionState,
|
||||
IntegrationConnectionStatus, IntegrationProvider, IntegrationStatus, LinkRunPullRequestRequest,
|
||||
MergeRunPullRequestRequest, MergeRunPullRequestResponse, ModelReference, PaginatedEventList,
|
||||
PaginatedRunList, PaginationMeta, PreflightResponse, PreviewUrlRequest, PreviewUrlResponse,
|
||||
Provider, ProviderCredentialTestRequest, ProviderCredentialTestResponse, ProviderList,
|
||||
PruneRunEntry, PruneRunsRequest, PruneRunsResponse, RenderWorkflowGraphDirection,
|
||||
RenderWorkflowGraphRequest, RewindRequest, RewindResponse, Run, RunArtifactEntry,
|
||||
RunArtifactListResponse, RunError, RunManifest, RunStage, RunUsage, RunUsageStage,
|
||||
RunUsageTotals, SandboxDetails, SandboxFileEntry, SandboxFileListResponse, SandboxService,
|
||||
SandboxServiceListResponse, SshAccessRequest, SshAccessResponse, StageHandler, StageState,
|
||||
StartRunRequest, SubmitAnswerRequest, SystemCpuResourceScope, SystemCpuResources,
|
||||
IntegrationConnectionKind, IntegrationConnectionState, IntegrationConnectionStatus,
|
||||
IntegrationProvider, IntegrationStatus, LinkRunPullRequestRequest, MergeRunPullRequestRequest,
|
||||
MergeRunPullRequestResponse, ModelReference, PaginatedEventList, PaginatedRunList,
|
||||
PaginationMeta, PreflightResponse, PreviewUrlRequest, PreviewUrlResponse, Provider,
|
||||
ProviderCredentialTestRequest, ProviderCredentialTestResponse, ProviderList, PruneRunEntry,
|
||||
PruneRunsRequest, PruneRunsResponse, RenderWorkflowGraphDirection, RenderWorkflowGraphRequest,
|
||||
Run, RunArtifactEntry, RunArtifactListResponse, RunError, RunManifest, RunStage, RunUsage,
|
||||
RunUsageStage, RunUsageTotals, SandboxDetails, SandboxFileEntry, SandboxFileListResponse,
|
||||
SandboxService, SandboxServiceListResponse, SshAccessRequest, SshAccessResponse, StageHandler,
|
||||
StageState, StartRunRequest, SubmitAnswerRequest, SystemCpuResourceScope, SystemCpuResources,
|
||||
SystemDiskResourceScope, SystemDiskResources, SystemInfoResponse, SystemIntegrationStatus,
|
||||
SystemIntegrationsResponse, SystemMemoryResourceScope, SystemMemoryResources,
|
||||
SystemRepairRunIssue, SystemRepairRunsResponse, SystemResourcesResponse, SystemRunCounts,
|
||||
TimelineEntryResponse, UpdateVariableRequest, UsageByModel, UsageStageRef,
|
||||
VariableListResponse, VncPreviewResponse, WriteBlobResponse,
|
||||
UpdateVariableRequest, UsageByModel, UsageStageRef, VariableListResponse, VncPreviewResponse,
|
||||
WriteBlobResponse,
|
||||
};
|
||||
use fabro_auth::SqlVaultCredentialSource;
|
||||
use fabro_automation::{self, AutomationStore};
|
||||
|
|
|
|||
|
|
@ -82,11 +82,6 @@ pub struct SessionEventStream {
|
|||
buffered_events: VecDeque<EventEnvelope>,
|
||||
}
|
||||
|
||||
pub struct RewindRunResult {
|
||||
pub status: u16,
|
||||
pub response: types::RewindResponse,
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
struct ListStoreRunsOptions {
|
||||
parent_id: Option<RunId>,
|
||||
|
|
@ -1351,59 +1346,6 @@ impl Client {
|
|||
convert_type(response.into_inner())
|
||||
}
|
||||
|
||||
pub async fn rewind_run(
|
||||
&self,
|
||||
run_id: &RunId,
|
||||
request: types::RewindRequest,
|
||||
) -> Result<RewindRunResult> {
|
||||
let response = self
|
||||
.send_api(|client| async move {
|
||||
client
|
||||
.rewind_run()
|
||||
.id(run_id.to_string())
|
||||
.body(request)
|
||||
.send()
|
||||
.await
|
||||
})
|
||||
.await?;
|
||||
let status = response.status().as_u16();
|
||||
Ok(RewindRunResult {
|
||||
status,
|
||||
response: response.into_inner(),
|
||||
})
|
||||
}
|
||||
|
||||
pub async fn fork_run(
|
||||
&self,
|
||||
run_id: &RunId,
|
||||
request: types::ForkRequest,
|
||||
) -> Result<types::ForkResponse> {
|
||||
let response = self
|
||||
.send_api(|client| async move {
|
||||
client
|
||||
.fork_run()
|
||||
.id(run_id.to_string())
|
||||
.body(request)
|
||||
.send()
|
||||
.await
|
||||
})
|
||||
.await?;
|
||||
Ok(response.into_inner())
|
||||
}
|
||||
|
||||
pub async fn run_timeline(&self, run_id: &RunId) -> Result<Vec<types::TimelineEntryResponse>> {
|
||||
let response = self
|
||||
.send_api(|client| async move {
|
||||
client
|
||||
.get_run_timeline()
|
||||
.id(run_id.to_string())
|
||||
.send()
|
||||
.await
|
||||
})
|
||||
.await?;
|
||||
Ok(response.into_inner())
|
||||
}
|
||||
|
||||
pub async fn list_store_runs(&self) -> Result<Vec<Run>> {
|
||||
self.list_store_runs_with_options(ListStoreRunsOptions::default())
|
||||
.await
|
||||
|
|
|
|||
|
|
@ -167,8 +167,6 @@ models/failure-reason.ts
|
|||
models/file-checkpoint.ts
|
||||
models/file-diff.ts
|
||||
models/folder-run-target.ts
|
||||
models/fork-request.ts
|
||||
models/fork-response.ts
|
||||
models/fork-source-ref.ts
|
||||
models/git-author-settings.ts
|
||||
models/git-context.ts
|
||||
|
|
@ -370,8 +368,6 @@ models/repository-ref.ts
|
|||
models/resolved-automation-git-workflow-source.ts
|
||||
models/review-target-kind.ts
|
||||
models/review-target.ts
|
||||
models/rewind-request.ts
|
||||
models/rewind-response.ts
|
||||
models/root-response-urls.ts
|
||||
models/root-response.ts
|
||||
models/run-agent-settings.ts
|
||||
|
|
@ -549,7 +545,6 @@ models/system-repair-run-issue.ts
|
|||
models/system-repair-runs-response.ts
|
||||
models/system-resources-response.ts
|
||||
models/system-run-counts.ts
|
||||
models/timeline-entry-response.ts
|
||||
models/tls-mode.ts
|
||||
models/todo-list-kind.ts
|
||||
models/todo-list-projection.ts
|
||||
|
|
|
|||
318
lib/packages/fabro-api-client/src/api/runs-api.ts
generated
318
lib/packages/fabro-api-client/src/api/runs-api.ts
generated
|
|
@ -42,10 +42,6 @@ import type { DenyRunRequest } from '../models';
|
|||
// @ts-ignore
|
||||
import type { ErrorResponse } from '../models';
|
||||
// @ts-ignore
|
||||
import type { ForkRequest } from '../models';
|
||||
// @ts-ignore
|
||||
import type { ForkResponse } from '../models';
|
||||
// @ts-ignore
|
||||
import type { LinkRunPullRequestRequest } from '../models';
|
||||
// @ts-ignore
|
||||
import type { MergeRunPullRequestRequest } from '../models';
|
||||
|
|
@ -64,10 +60,6 @@ import type { PullRequestResponse } from '../models';
|
|||
// @ts-ignore
|
||||
import type { RenderWorkflowGraphRequest } from '../models';
|
||||
// @ts-ignore
|
||||
import type { RewindRequest } from '../models';
|
||||
// @ts-ignore
|
||||
import type { RewindResponse } from '../models';
|
||||
// @ts-ignore
|
||||
import type { Run } from '../models';
|
||||
// @ts-ignore
|
||||
import type { RunIntent } from '../models';
|
||||
|
|
@ -76,8 +68,6 @@ import type { RunManifest } from '../models';
|
|||
// @ts-ignore
|
||||
import type { StartRunRequest } from '../models';
|
||||
// @ts-ignore
|
||||
import type { TimelineEntryResponse } from '../models';
|
||||
// @ts-ignore
|
||||
import type { UpdateRunParentRequest } from '../models';
|
||||
// @ts-ignore
|
||||
import type { UpdateRunRequest } from '../models';
|
||||
|
|
@ -545,49 +535,6 @@ export const RunsApiAxiosParamCreator = function (configuration?: Configuration)
|
|||
options: localVarRequestOptions,
|
||||
};
|
||||
},
|
||||
/**
|
||||
* Creates a new run from a checkpoint of the source run. The source run is left untouched.
|
||||
* @summary Fork Run
|
||||
* @param {string} id Unique run identifier (ULID).
|
||||
* @param {ForkRequest} [forkRequest]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
forkRun: async (id: string, forkRequest?: ForkRequest, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
|
||||
// verify required parameter 'id' is not null or undefined
|
||||
assertParamExists('forkRun', 'id', id)
|
||||
const localVarPath = `/api/v1/runs/{id}/fork`
|
||||
.replace(`{${"id"}}`, encodeURIComponent(String(id)));
|
||||
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
||||
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
||||
let baseOptions;
|
||||
if (configuration) {
|
||||
baseOptions = configuration.baseOptions;
|
||||
}
|
||||
|
||||
const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
|
||||
const localVarHeaderParameter = {} as any;
|
||||
const localVarQueryParameter = {} as any;
|
||||
|
||||
// authentication SessionCookie required
|
||||
|
||||
// authentication BearerAuth required
|
||||
// http bearer authentication required
|
||||
await setBearerAuthToObject(localVarHeaderParameter, configuration)
|
||||
|
||||
localVarHeaderParameter['Content-Type'] = 'application/json';
|
||||
localVarHeaderParameter['Accept'] = 'application/json';
|
||||
|
||||
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
||||
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||
localVarRequestOptions.data = serializeDataIfNeeded(forkRequest, localVarRequestOptions, configuration)
|
||||
|
||||
return {
|
||||
url: toPathString(localVarUrlObj),
|
||||
options: localVarRequestOptions,
|
||||
};
|
||||
},
|
||||
/**
|
||||
* Returns the stored pull request record for a run plus live GitHub details when available.
|
||||
* @summary Get Run Pull Request
|
||||
|
|
@ -668,46 +615,6 @@ export const RunsApiAxiosParamCreator = function (configuration?: Configuration)
|
|||
options: localVarRequestOptions,
|
||||
};
|
||||
},
|
||||
/**
|
||||
* Returns checkpoint timeline entries from durable run-store checkpoints. Metadata branches are write-only archives and are not read by this endpoint.
|
||||
* @summary Get Run Timeline
|
||||
* @param {string} id Unique run identifier (ULID).
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
getRunTimeline: async (id: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
|
||||
// verify required parameter 'id' is not null or undefined
|
||||
assertParamExists('getRunTimeline', 'id', id)
|
||||
const localVarPath = `/api/v1/runs/{id}/timeline`
|
||||
.replace(`{${"id"}}`, encodeURIComponent(String(id)));
|
||||
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
||||
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
||||
let baseOptions;
|
||||
if (configuration) {
|
||||
baseOptions = configuration.baseOptions;
|
||||
}
|
||||
|
||||
const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
|
||||
const localVarHeaderParameter = {} as any;
|
||||
const localVarQueryParameter = {} as any;
|
||||
|
||||
// authentication SessionCookie required
|
||||
|
||||
// authentication BearerAuth required
|
||||
// http bearer authentication required
|
||||
await setBearerAuthToObject(localVarHeaderParameter, configuration)
|
||||
|
||||
localVarHeaderParameter['Accept'] = 'application/json';
|
||||
|
||||
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
||||
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||
|
||||
return {
|
||||
url: toPathString(localVarUrlObj),
|
||||
options: localVarRequestOptions,
|
||||
};
|
||||
},
|
||||
/**
|
||||
* Links a run under an orchestration parent. Parent links are mutable for all run states, including archived and terminal runs.
|
||||
* @summary Link Run Parent
|
||||
|
|
@ -1163,89 +1070,6 @@ export const RunsApiAxiosParamCreator = function (configuration?: Configuration)
|
|||
options: localVarRequestOptions,
|
||||
};
|
||||
},
|
||||
/**
|
||||
* Creates a fresh run from the terminal source run\'s captured durable definition, records `retried_from` on the new run, and schedules it for execution. The source run is left unchanged. Active and archived runs are not retryable.
|
||||
* @summary Retry Run
|
||||
* @param {string} id Unique run identifier (ULID).
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
retryRun: async (id: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
|
||||
// verify required parameter 'id' is not null or undefined
|
||||
assertParamExists('retryRun', 'id', id)
|
||||
const localVarPath = `/api/v1/runs/{id}/retry`
|
||||
.replace(`{${"id"}}`, encodeURIComponent(String(id)));
|
||||
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
||||
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
||||
let baseOptions;
|
||||
if (configuration) {
|
||||
baseOptions = configuration.baseOptions;
|
||||
}
|
||||
|
||||
const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
|
||||
const localVarHeaderParameter = {} as any;
|
||||
const localVarQueryParameter = {} as any;
|
||||
|
||||
// authentication SessionCookie required
|
||||
|
||||
// authentication BearerAuth required
|
||||
// http bearer authentication required
|
||||
await setBearerAuthToObject(localVarHeaderParameter, configuration)
|
||||
|
||||
localVarHeaderParameter['Accept'] = 'application/json';
|
||||
|
||||
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
||||
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||
|
||||
return {
|
||||
url: toPathString(localVarUrlObj),
|
||||
options: localVarRequestOptions,
|
||||
};
|
||||
},
|
||||
/**
|
||||
* Creates a new run from an earlier checkpoint of a terminal source run, archives the source run, and records `run.superseded_by` on the source after archive succeeds. Returns 207 when the new run was created but the source archive step failed.
|
||||
* @summary Rewind Run
|
||||
* @param {string} id Unique run identifier (ULID).
|
||||
* @param {RewindRequest} [rewindRequest]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
rewindRun: async (id: string, rewindRequest?: RewindRequest, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
|
||||
// verify required parameter 'id' is not null or undefined
|
||||
assertParamExists('rewindRun', 'id', id)
|
||||
const localVarPath = `/api/v1/runs/{id}/rewind`
|
||||
.replace(`{${"id"}}`, encodeURIComponent(String(id)));
|
||||
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
||||
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
||||
let baseOptions;
|
||||
if (configuration) {
|
||||
baseOptions = configuration.baseOptions;
|
||||
}
|
||||
|
||||
const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
|
||||
const localVarHeaderParameter = {} as any;
|
||||
const localVarQueryParameter = {} as any;
|
||||
|
||||
// authentication SessionCookie required
|
||||
|
||||
// authentication BearerAuth required
|
||||
// http bearer authentication required
|
||||
await setBearerAuthToObject(localVarHeaderParameter, configuration)
|
||||
|
||||
localVarHeaderParameter['Content-Type'] = 'application/json';
|
||||
localVarHeaderParameter['Accept'] = 'application/json';
|
||||
|
||||
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
||||
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||
localVarRequestOptions.data = serializeDataIfNeeded(rewindRequest, localVarRequestOptions, configuration)
|
||||
|
||||
return {
|
||||
url: toPathString(localVarUrlObj),
|
||||
options: localVarRequestOptions,
|
||||
};
|
||||
},
|
||||
/**
|
||||
* Validates runtime readiness for a workflow manifest without creating a run.
|
||||
* @summary Validate Workflow Manifest
|
||||
|
|
@ -1731,20 +1555,6 @@ export const RunsApiFp = function(configuration?: Configuration) {
|
|||
const localVarOperationServerBasePath = operationServerMap['RunsApi.denyRun']?.[localVarOperationServerIndex]?.url;
|
||||
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
||||
},
|
||||
/**
|
||||
* Creates a new run from a checkpoint of the source run. The source run is left untouched.
|
||||
* @summary Fork Run
|
||||
* @param {string} id Unique run identifier (ULID).
|
||||
* @param {ForkRequest} [forkRequest]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async forkRun(id: string, forkRequest?: ForkRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ForkResponse>> {
|
||||
const localVarAxiosArgs = await localVarAxiosParamCreator.forkRun(id, forkRequest, options);
|
||||
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
|
||||
const localVarOperationServerBasePath = operationServerMap['RunsApi.forkRun']?.[localVarOperationServerIndex]?.url;
|
||||
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
||||
},
|
||||
/**
|
||||
* Returns the stored pull request record for a run plus live GitHub details when available.
|
||||
* @summary Get Run Pull Request
|
||||
|
|
@ -1771,19 +1581,6 @@ export const RunsApiFp = function(configuration?: Configuration) {
|
|||
const localVarOperationServerBasePath = operationServerMap['RunsApi.getRunPullRequestCreation']?.[localVarOperationServerIndex]?.url;
|
||||
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
||||
},
|
||||
/**
|
||||
* Returns checkpoint timeline entries from durable run-store checkpoints. Metadata branches are write-only archives and are not read by this endpoint.
|
||||
* @summary Get Run Timeline
|
||||
* @param {string} id Unique run identifier (ULID).
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async getRunTimeline(id: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<TimelineEntryResponse>>> {
|
||||
const localVarAxiosArgs = await localVarAxiosParamCreator.getRunTimeline(id, options);
|
||||
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
|
||||
const localVarOperationServerBasePath = operationServerMap['RunsApi.getRunTimeline']?.[localVarOperationServerIndex]?.url;
|
||||
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
||||
},
|
||||
/**
|
||||
* Links a run under an orchestration parent. Parent links are mutable for all run states, including archived and terminal runs.
|
||||
* @summary Link Run Parent
|
||||
|
|
@ -1924,33 +1721,6 @@ export const RunsApiFp = function(configuration?: Configuration) {
|
|||
const localVarOperationServerBasePath = operationServerMap['RunsApi.retrieveRunGraphSource']?.[localVarOperationServerIndex]?.url;
|
||||
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
||||
},
|
||||
/**
|
||||
* Creates a fresh run from the terminal source run\'s captured durable definition, records `retried_from` on the new run, and schedules it for execution. The source run is left unchanged. Active and archived runs are not retryable.
|
||||
* @summary Retry Run
|
||||
* @param {string} id Unique run identifier (ULID).
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async retryRun(id: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Run>> {
|
||||
const localVarAxiosArgs = await localVarAxiosParamCreator.retryRun(id, options);
|
||||
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
|
||||
const localVarOperationServerBasePath = operationServerMap['RunsApi.retryRun']?.[localVarOperationServerIndex]?.url;
|
||||
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
||||
},
|
||||
/**
|
||||
* Creates a new run from an earlier checkpoint of a terminal source run, archives the source run, and records `run.superseded_by` on the source after archive succeeds. Returns 207 when the new run was created but the source archive step failed.
|
||||
* @summary Rewind Run
|
||||
* @param {string} id Unique run identifier (ULID).
|
||||
* @param {RewindRequest} [rewindRequest]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async rewindRun(id: string, rewindRequest?: RewindRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<RewindResponse>> {
|
||||
const localVarAxiosArgs = await localVarAxiosParamCreator.rewindRun(id, rewindRequest, options);
|
||||
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
|
||||
const localVarOperationServerBasePath = operationServerMap['RunsApi.rewindRun']?.[localVarOperationServerIndex]?.url;
|
||||
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
||||
},
|
||||
/**
|
||||
* Validates runtime readiness for a workflow manifest without creating a run.
|
||||
* @summary Validate Workflow Manifest
|
||||
|
|
@ -2179,17 +1949,6 @@ export const RunsApiFactory = function (configuration?: Configuration, basePath?
|
|||
denyRun(id: string, denyRunRequest?: DenyRunRequest, options?: RawAxiosRequestConfig): AxiosPromise<Run> {
|
||||
return localVarFp.denyRun(id, denyRunRequest, options).then((request) => request(axios, basePath));
|
||||
},
|
||||
/**
|
||||
* Creates a new run from a checkpoint of the source run. The source run is left untouched.
|
||||
* @summary Fork Run
|
||||
* @param {string} id Unique run identifier (ULID).
|
||||
* @param {ForkRequest} [forkRequest]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
forkRun(id: string, forkRequest?: ForkRequest, options?: RawAxiosRequestConfig): AxiosPromise<ForkResponse> {
|
||||
return localVarFp.forkRun(id, forkRequest, options).then((request) => request(axios, basePath));
|
||||
},
|
||||
/**
|
||||
* Returns the stored pull request record for a run plus live GitHub details when available.
|
||||
* @summary Get Run Pull Request
|
||||
|
|
@ -2210,16 +1969,6 @@ export const RunsApiFactory = function (configuration?: Configuration, basePath?
|
|||
getRunPullRequestCreation(id: string, options?: RawAxiosRequestConfig): AxiosPromise<PullRequestCreation> {
|
||||
return localVarFp.getRunPullRequestCreation(id, options).then((request) => request(axios, basePath));
|
||||
},
|
||||
/**
|
||||
* Returns checkpoint timeline entries from durable run-store checkpoints. Metadata branches are write-only archives and are not read by this endpoint.
|
||||
* @summary Get Run Timeline
|
||||
* @param {string} id Unique run identifier (ULID).
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
getRunTimeline(id: string, options?: RawAxiosRequestConfig): AxiosPromise<Array<TimelineEntryResponse>> {
|
||||
return localVarFp.getRunTimeline(id, options).then((request) => request(axios, basePath));
|
||||
},
|
||||
/**
|
||||
* Links a run under an orchestration parent. Parent links are mutable for all run states, including archived and terminal runs.
|
||||
* @summary Link Run Parent
|
||||
|
|
@ -2330,27 +2079,6 @@ export const RunsApiFactory = function (configuration?: Configuration, basePath?
|
|||
retrieveRunGraphSource(id: string, options?: RawAxiosRequestConfig): AxiosPromise<string> {
|
||||
return localVarFp.retrieveRunGraphSource(id, options).then((request) => request(axios, basePath));
|
||||
},
|
||||
/**
|
||||
* Creates a fresh run from the terminal source run\'s captured durable definition, records `retried_from` on the new run, and schedules it for execution. The source run is left unchanged. Active and archived runs are not retryable.
|
||||
* @summary Retry Run
|
||||
* @param {string} id Unique run identifier (ULID).
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
retryRun(id: string, options?: RawAxiosRequestConfig): AxiosPromise<Run> {
|
||||
return localVarFp.retryRun(id, options).then((request) => request(axios, basePath));
|
||||
},
|
||||
/**
|
||||
* Creates a new run from an earlier checkpoint of a terminal source run, archives the source run, and records `run.superseded_by` on the source after archive succeeds. Returns 207 when the new run was created but the source archive step failed.
|
||||
* @summary Rewind Run
|
||||
* @param {string} id Unique run identifier (ULID).
|
||||
* @param {RewindRequest} [rewindRequest]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
rewindRun(id: string, rewindRequest?: RewindRequest, options?: RawAxiosRequestConfig): AxiosPromise<RewindResponse> {
|
||||
return localVarFp.rewindRun(id, rewindRequest, options).then((request) => request(axios, basePath));
|
||||
},
|
||||
/**
|
||||
* Validates runtime readiness for a workflow manifest without creating a run.
|
||||
* @summary Validate Workflow Manifest
|
||||
|
|
@ -2564,18 +2292,6 @@ export class RunsApi extends BaseAPI {
|
|||
return RunsApiFp(this.configuration).denyRun(id, denyRunRequest, options).then((request) => request(this.axios, this.basePath));
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new run from a checkpoint of the source run. The source run is left untouched.
|
||||
* @summary Fork Run
|
||||
* @param {string} id Unique run identifier (ULID).
|
||||
* @param {ForkRequest} [forkRequest]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
public forkRun(id: string, forkRequest?: ForkRequest, options?: RawAxiosRequestConfig) {
|
||||
return RunsApiFp(this.configuration).forkRun(id, forkRequest, options).then((request) => request(this.axios, this.basePath));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the stored pull request record for a run plus live GitHub details when available.
|
||||
* @summary Get Run Pull Request
|
||||
|
|
@ -2598,17 +2314,6 @@ export class RunsApi extends BaseAPI {
|
|||
return RunsApiFp(this.configuration).getRunPullRequestCreation(id, options).then((request) => request(this.axios, this.basePath));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns checkpoint timeline entries from durable run-store checkpoints. Metadata branches are write-only archives and are not read by this endpoint.
|
||||
* @summary Get Run Timeline
|
||||
* @param {string} id Unique run identifier (ULID).
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
public getRunTimeline(id: string, options?: RawAxiosRequestConfig) {
|
||||
return RunsApiFp(this.configuration).getRunTimeline(id, options).then((request) => request(this.axios, this.basePath));
|
||||
}
|
||||
|
||||
/**
|
||||
* Links a run under an orchestration parent. Parent links are mutable for all run states, including archived and terminal runs.
|
||||
* @summary Link Run Parent
|
||||
|
|
@ -2729,29 +2434,6 @@ export class RunsApi extends BaseAPI {
|
|||
return RunsApiFp(this.configuration).retrieveRunGraphSource(id, options).then((request) => request(this.axios, this.basePath));
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a fresh run from the terminal source run\'s captured durable definition, records `retried_from` on the new run, and schedules it for execution. The source run is left unchanged. Active and archived runs are not retryable.
|
||||
* @summary Retry Run
|
||||
* @param {string} id Unique run identifier (ULID).
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
public retryRun(id: string, options?: RawAxiosRequestConfig) {
|
||||
return RunsApiFp(this.configuration).retryRun(id, options).then((request) => request(this.axios, this.basePath));
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new run from an earlier checkpoint of a terminal source run, archives the source run, and records `run.superseded_by` on the source after archive succeeds. Returns 207 when the new run was created but the source archive step failed.
|
||||
* @summary Rewind Run
|
||||
* @param {string} id Unique run identifier (ULID).
|
||||
* @param {RewindRequest} [rewindRequest]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
public rewindRun(id: string, rewindRequest?: RewindRequest, options?: RawAxiosRequestConfig) {
|
||||
return RunsApiFp(this.configuration).rewindRun(id, rewindRequest, options).then((request) => request(this.axios, this.basePath));
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates runtime readiness for a workflow manifest without creating a run.
|
||||
* @summary Validate Workflow Manifest
|
||||
|
|
|
|||
|
|
@ -138,8 +138,6 @@ export * from './failure-reason';
|
|||
export * from './file-checkpoint';
|
||||
export * from './file-diff';
|
||||
export * from './folder-run-target';
|
||||
export * from './fork-request';
|
||||
export * from './fork-response';
|
||||
export * from './fork-source-ref';
|
||||
export * from './git-author-settings';
|
||||
export * from './git-context';
|
||||
|
|
@ -340,8 +338,6 @@ export * from './repository-ref';
|
|||
export * from './resolved-automation-git-workflow-source';
|
||||
export * from './review-target';
|
||||
export * from './review-target-kind';
|
||||
export * from './rewind-request';
|
||||
export * from './rewind-response';
|
||||
export * from './root-response';
|
||||
export * from './root-response-urls';
|
||||
export * from './run';
|
||||
|
|
@ -519,7 +515,6 @@ export * from './system-repair-run-issue';
|
|||
export * from './system-repair-runs-response';
|
||||
export * from './system-resources-response';
|
||||
export * from './system-run-counts';
|
||||
export * from './timeline-entry-response';
|
||||
export * from './tls-mode';
|
||||
export * from './todo-list-kind';
|
||||
export * from './todo-list-projection';
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue