refactor: route --in-place through worktree_mode override

Drop --allow-no-checkpoints and the paired ManifestArgs in_place /
allow_no_checkpoints fields. The CLI now translates --in-place into a
single ManifestArgs.worktree_mode = "never" signal that flows through
the existing args→layer pipeline as run.sandbox.local.worktree_mode =
Never. The server computes prepared.in_place from the resolved settings
once, replacing the trio of bail!s and the sandbox-default fixup.
This commit is contained in:
Bryan Helmkamp 2026-04-28 08:44:54 -07:00
parent 01f5a06a80
commit 3f027be220
No known key found for this signature in database
13 changed files with 153 additions and 159 deletions

View file

@ -3693,12 +3693,11 @@ components:
type: boolean
preserve_sandbox:
type: boolean
in_place:
type: boolean
description: Run against the submitted source directory directly.
allow_no_checkpoints:
type: boolean
description: Required with `in_place`; disables git checkpointing.
worktree_mode:
type: string
description: |
Override `run.sandbox.local.worktree_mode` (e.g. `never` for
`--in-place`).
label:
type: array
items:

View file

@ -237,13 +237,9 @@ pub(crate) struct RunArgs {
pub(crate) sandbox: Option<CliSandboxProvider>,
/// Run directly in the source checkout without git checkpoints
#[arg(long, requires = "allow_no_checkpoints", conflicts_with = "sandbox")]
#[arg(long, conflicts_with = "sandbox")]
pub(crate) in_place: bool,
/// Acknowledge that --in-place disables checkpoints
#[arg(long, requires = "in_place")]
pub(crate) allow_no_checkpoints: bool,
/// Attach a label to this run (repeatable, format: KEY=VALUE)
#[arg(long = "label", value_name = "KEY=VALUE")]
pub(crate) label: Vec<String>,

View file

@ -162,44 +162,42 @@ pub(crate) fn build_run_manifest(input: ManifestBuildInput) -> Result<BuiltManif
pub(crate) fn run_manifest_args(args: &RunArgs) -> Option<types::ManifestArgs> {
let payload = types::ManifestArgs {
auto_approve: args.auto_approve.then_some(true),
dry_run: args.dry_run.then_some(true),
label: args.label.clone(),
model: args.model.clone(),
no_retro: args.no_retro.then_some(true),
preserve_sandbox: args.preserve_sandbox.then_some(true),
provider: args.provider.clone(),
sandbox: args
auto_approve: args.auto_approve.then_some(true),
dry_run: args.dry_run.then_some(true),
label: args.label.clone(),
model: args.model.clone(),
no_retro: args.no_retro.then_some(true),
preserve_sandbox: args.preserve_sandbox.then_some(true),
provider: args.provider.clone(),
sandbox: args
.sandbox
.map(|provider| fabro_sandbox::SandboxProvider::from(provider).to_string())
.or_else(|| {
args.in_place
.then(|| fabro_sandbox::SandboxProvider::Local.to_string())
}),
docker_image: None,
verbose: args.verbose.then_some(true),
in_place: args.in_place.then_some(true),
allow_no_checkpoints: args.allow_no_checkpoints.then_some(true),
docker_image: None,
verbose: args.verbose.then_some(true),
worktree_mode: args.in_place.then(|| "never".to_string()),
};
(!manifest_args_is_empty(&payload)).then_some(payload)
}
pub(crate) fn preflight_manifest_args(args: &PreflightArgs) -> Option<types::ManifestArgs> {
let payload = types::ManifestArgs {
auto_approve: None,
dry_run: None,
label: Vec::new(),
model: args.model.clone(),
no_retro: None,
preserve_sandbox: None,
provider: args.provider.clone(),
sandbox: args
auto_approve: None,
dry_run: None,
label: Vec::new(),
model: args.model.clone(),
no_retro: None,
preserve_sandbox: None,
provider: args.provider.clone(),
sandbox: args
.sandbox
.map(|provider| fabro_sandbox::SandboxProvider::from(provider).to_string()),
docker_image: None,
verbose: args.verbose.then_some(true),
in_place: None,
allow_no_checkpoints: None,
docker_image: None,
verbose: args.verbose.then_some(true),
worktree_mode: None,
};
(!manifest_args_is_empty(&payload)).then_some(payload)
}
@ -700,6 +698,7 @@ fn manifest_args_is_empty(args: &types::ManifestArgs) -> bool {
&& args.sandbox.is_none()
&& args.docker_image.is_none()
&& args.verbose.is_none()
&& args.worktree_mode.is_none()
}
#[cfg(test)]

View file

@ -53,7 +53,6 @@ fn help() {
-v, --verbose Enable verbose output
--sandbox <SANDBOX> Sandbox for agent tools [possible values: local, docker, daytona]
--in-place Run directly in the source checkout without git checkpoints
--allow-no-checkpoints Acknowledge that --in-place disables checkpoints
--label <KEY=VALUE> Attach a label to this run (repeatable, format: KEY=VALUE)
--no-retro Skip retro generation after the run
--preserve-sandbox Keep the sandbox alive after the run finishes (for debugging)

View file

@ -170,7 +170,6 @@ fn help() {
-v, --verbose Enable verbose output
--sandbox <SANDBOX> Sandbox for agent tools [possible values: local, docker, daytona]
--in-place Run directly in the source checkout without git checkpoints
--allow-no-checkpoints Acknowledge that --in-place disables checkpoints
--label <KEY=VALUE> Attach a label to this run (repeatable, format: KEY=VALUE)
--no-retro Skip retro generation after the run
--preserve-sandbox Keep the sandbox alive after the run finishes (for debugging)

View file

@ -6,8 +6,9 @@ use anyhow::{Result, anyhow, bail};
use fabro_api::types;
use fabro_auth::auth_issue_message;
use fabro_config::{
CliLayer, CliOutputLayer, DaytonaDockerfileLayer, DockerSandboxLayer, ReplaceMap,
RunExecutionLayer, RunLayer, RunModelLayer, RunSandboxLayer, WorkflowSettingsBuilder,
CliLayer, CliOutputLayer, DaytonaDockerfileLayer, DockerSandboxLayer, LocalSandboxLayer,
ReplaceMap, RunExecutionLayer, RunLayer, RunModelLayer, RunSandboxLayer,
WorkflowSettingsBuilder,
};
use fabro_graphviz::graph::{Graph, is_llm_handler_type};
use fabro_graphviz::render::apply_direction;
@ -24,7 +25,7 @@ use fabro_types::settings::cli::OutputVerbosity;
use fabro_types::settings::interp::InterpString;
use fabro_types::settings::run::{
ApprovalMode, DaytonaNetworkLayer, DaytonaSettings, DockerSettings, DockerfileSource, RunGoal,
RunMode, RunNamespace,
RunMode, RunNamespace, WorktreeMode,
};
use fabro_types::{DirtyStatus, PreRunGitContext, PreRunPushOutcome, RunId, WorkflowSettings};
use fabro_util::check_report::{CheckDetail, CheckReport, CheckResult, CheckSection, CheckStatus};
@ -39,16 +40,16 @@ use crate::server::AppState;
#[derive(Clone)]
pub(crate) struct PreparedManifest {
pub cwd: PathBuf,
pub git: Option<types::ManifestGit>,
pub root_source: String,
pub run_id: Option<RunId>,
pub settings: WorkflowSettings,
pub target_path: PathBuf,
pub workflow_bundle: WorkflowBundle,
pub workflow_input: BundledWorkflow,
pub source_directory: PathBuf,
pub checkpoints_disabled: bool,
pub cwd: PathBuf,
pub git: Option<types::ManifestGit>,
pub root_source: String,
pub run_id: Option<RunId>,
pub settings: WorkflowSettings,
pub target_path: PathBuf,
pub workflow_bundle: WorkflowBundle,
pub workflow_input: BundledWorkflow,
pub source_directory: PathBuf,
pub in_place: bool,
}
#[derive(Clone, Debug, Default)]
@ -69,29 +70,6 @@ pub(crate) fn prepare_manifest(
if manifest.version != 1 {
bail!("unsupported manifest version {}", manifest.version);
}
let (in_place, allow_no_checkpoints) = manifest.args.as_ref().map_or((false, false), |args| {
(
args.in_place.unwrap_or(false),
args.allow_no_checkpoints.unwrap_or(false),
)
});
if in_place && !allow_no_checkpoints {
bail!("in_place requires allow_no_checkpoints");
}
if allow_no_checkpoints && !in_place {
bail!("allow_no_checkpoints requires in_place");
}
if in_place {
if let Some(sandbox) = manifest
.args
.as_ref()
.and_then(|args| args.sandbox.as_deref())
{
if sandbox != "local" {
bail!("in_place requires the local sandbox provider");
}
}
}
let cwd = PathBuf::from(&manifest.cwd);
let target_path = PathBuf::from(&manifest.target.path);
@ -141,6 +119,9 @@ pub(crate) fn prepare_manifest(
settings.run.goal = Some(RunGoal::Inline(InterpString::parse(&goal.text)));
}
let in_place = settings.run.sandbox.provider == "local"
&& settings.run.sandbox.local.worktree_mode == WorktreeMode::Never;
Ok(PreparedManifest {
cwd: cwd.clone(),
git: manifest.git.clone(),
@ -156,7 +137,7 @@ pub(crate) fn prepare_manifest(
workflow_bundle,
workflow_input,
source_directory: resolve_working_directory(&settings, &cwd),
checkpoints_disabled: in_place,
in_place,
})
}
@ -191,7 +172,7 @@ pub(crate) fn create_run_input(
base_branch: prepared.git.as_ref().map(|git| git.branch.clone()),
pre_run_git: prepared.git.as_ref().map(pre_run_git_from_manifest),
fork_source_ref: None,
checkpoints_disabled: prepared.checkpoints_disabled,
checkpoints_disabled: prepared.in_place,
provenance: None,
configured_providers,
}
@ -315,16 +296,21 @@ fn manifest_args_overrides(args: Option<&types::ManifestArgs>) -> ManifestSettin
name: args.model.as_deref().map(InterpString::parse),
fallbacks: Vec::new(),
});
let sandbox_provider = args
.sandbox
.clone()
.or_else(|| (args.in_place == Some(true)).then(|| "local".to_string()));
let sandbox = (sandbox_provider.is_some()
let local_worktree = args
.worktree_mode
.as_deref()
.and_then(parse_worktree_mode_arg)
.map(|mode| LocalSandboxLayer {
worktree_mode: Some(mode),
});
let sandbox = (args.sandbox.is_some()
|| args.preserve_sandbox.is_some()
|| args.docker_image.is_some())
|| args.docker_image.is_some()
|| local_worktree.is_some())
.then(|| RunSandboxLayer {
provider: sandbox_provider,
provider: args.sandbox.clone(),
preserve: args.preserve_sandbox,
local: local_worktree,
docker: args.docker_image.as_ref().map(|image| DockerSandboxLayer {
image: Some(image.clone()),
..DockerSandboxLayer::default()
@ -373,6 +359,16 @@ fn manifest_args_overrides(args: Option<&types::ManifestArgs>) -> ManifestSettin
ManifestSettingsOverrides { run, cli }
}
fn parse_worktree_mode_arg(value: &str) -> Option<WorktreeMode> {
match value {
"always" => Some(WorktreeMode::Always),
"clean" => Some(WorktreeMode::Clean),
"dirty" => Some(WorktreeMode::Dirty),
"never" => Some(WorktreeMode::Never),
_ => None,
}
}
fn parse_labels(labels: &[String]) -> HashMap<String, String> {
labels
.iter()
@ -1164,18 +1160,17 @@ root = "/srv/fabro"
)));
let mut manifest = minimal_manifest();
manifest.args = Some(types::ManifestArgs {
auto_approve: None,
dry_run: Some(true),
label: Vec::new(),
model: None,
no_retro: None,
preserve_sandbox: None,
provider: None,
sandbox: None,
docker_image: None,
verbose: None,
in_place: None,
allow_no_checkpoints: None,
auto_approve: None,
dry_run: Some(true),
label: Vec::new(),
model: None,
no_retro: None,
preserve_sandbox: None,
provider: None,
sandbox: None,
docker_image: None,
verbose: None,
worktree_mode: None,
});
let prepared = prepare_manifest(&server_settings, &manifest).unwrap();

View file

@ -5,7 +5,7 @@
* HTTP API for managing Fabro workflow run executions.
*
* The version of the OpenAPI document: 0.1.0
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
@ -67,7 +67,7 @@ import type { TimelineEntryResponse } from '../models';
export const RunsApiAxiosParamCreator = function (configuration?: Configuration) {
return {
/**
* Marks a terminal run (`succeeded`, `failed`, or `dead`) as `archived`. Archived runs are hidden from default listings and are read-only until unarchived. Idempotent on already-archived runs. Returns 409 if the run is not terminal.
* Marks a terminal run (`succeeded`, `failed`, or `dead`) as `archived`. Archived runs are hidden from default listings and are read-only until unarchived. Idempotent on already-archived runs. Returns 409 if the run is not terminal.
* @summary Archive Run
* @param {string} id Unique run identifier (ULID).
* @param {*} [options] Override http request option.
@ -189,7 +189,7 @@ export const RunsApiAxiosParamCreator = function (configuration?: Configuration)
/**
* Creates a new workflow run in `submitted` status from a self-contained manifest.
* @summary Create Run
* @param {RunManifest} runManifest
* @param {RunManifest} runManifest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -231,7 +231,7 @@ export const RunsApiAxiosParamCreator = function (configuration?: Configuration)
* Creates a pull request for a completed run on GitHub and persists the record on the server.
* @summary Create Run Pull Request
* @param {string} id Unique run identifier (ULID).
* @param {CreateRunPullRequestRequest} createRunPullRequestRequest
* @param {CreateRunPullRequestRequest} createRunPullRequestRequest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -318,10 +318,10 @@ export const RunsApiAxiosParamCreator = function (configuration?: Configuration)
};
},
/**
* Creates a new run from a checkpoint of the source run. The source run is left untouched.
* 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 {ForkRequest} [forkRequest]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -401,7 +401,7 @@ export const RunsApiAxiosParamCreator = function (configuration?: Configuration)
};
},
/**
* Returns checkpoint timeline entries from durable run-store checkpoints. Metadata branches are write-only archives and are not read by this endpoint.
* 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.
@ -541,7 +541,7 @@ export const RunsApiAxiosParamCreator = function (configuration?: Configuration)
* Merges the stored pull request for a run on GitHub.
* @summary Merge Run Pull Request
* @param {string} id Unique run identifier (ULID).
* @param {MergeRunPullRequestRequest} mergeRunPullRequestRequest
* @param {MergeRunPullRequestRequest} mergeRunPullRequestRequest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -625,7 +625,7 @@ export const RunsApiAxiosParamCreator = function (configuration?: Configuration)
/**
* Validates and renders a workflow manifest as SVG without creating a run.
* @summary Render Workflow Graph
* @param {RenderWorkflowGraphRequest} renderWorkflowGraphRequest
* @param {RenderWorkflowGraphRequest} renderWorkflowGraphRequest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -827,10 +827,10 @@ export const RunsApiAxiosParamCreator = function (configuration?: Configuration)
};
},
/**
* 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.
* 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 {RewindRequest} [rewindRequest]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -872,7 +872,7 @@ export const RunsApiAxiosParamCreator = function (configuration?: Configuration)
/**
* Validates a workflow manifest without creating a run.
* @summary Validate Workflow Manifest
* @param {RunManifest} runManifest
* @param {RunManifest} runManifest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -914,7 +914,7 @@ export const RunsApiAxiosParamCreator = function (configuration?: Configuration)
* Starts a submitted run, queuing it for execution. Provide `resume=true` to resume an interrupted run from checkpoint. Returns 409 if the run is not startable.
* @summary Start Run
* @param {string} id Unique run identifier (ULID).
* @param {StartRunRequest} [startRunRequest]
* @param {StartRunRequest} [startRunRequest]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -954,7 +954,7 @@ export const RunsApiAxiosParamCreator = function (configuration?: Configuration)
};
},
/**
* Restores an archived run to its prior terminal status. Idempotent on runs that are terminal but not archived (returns the current status without emitting an event). Returns 409 if the run is active.
* Restores an archived run to its prior terminal status. Idempotent on runs that are terminal but not archived (returns the current status without emitting an event). Returns 409 if the run is active.
* @summary Unarchive Run
* @param {string} id Unique run identifier (ULID).
* @param {*} [options] Override http request option.
@ -1043,7 +1043,7 @@ export const RunsApiFp = function(configuration?: Configuration) {
const localVarAxiosParamCreator = RunsApiAxiosParamCreator(configuration)
return {
/**
* Marks a terminal run (`succeeded`, `failed`, or `dead`) as `archived`. Archived runs are hidden from default listings and are read-only until unarchived. Idempotent on already-archived runs. Returns 409 if the run is not terminal.
* Marks a terminal run (`succeeded`, `failed`, or `dead`) as `archived`. Archived runs are hidden from default listings and are read-only until unarchived. Idempotent on already-archived runs. Returns 409 if the run is not terminal.
* @summary Archive Run
* @param {string} id Unique run identifier (ULID).
* @param {*} [options] Override http request option.
@ -1084,7 +1084,7 @@ export const RunsApiFp = function(configuration?: Configuration) {
/**
* Creates a new workflow run in `submitted` status from a self-contained manifest.
* @summary Create Run
* @param {RunManifest} runManifest
* @param {RunManifest} runManifest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -1098,7 +1098,7 @@ export const RunsApiFp = function(configuration?: Configuration) {
* Creates a pull request for a completed run on GitHub and persists the record on the server.
* @summary Create Run Pull Request
* @param {string} id Unique run identifier (ULID).
* @param {CreateRunPullRequestRequest} createRunPullRequestRequest
* @param {CreateRunPullRequestRequest} createRunPullRequestRequest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -1123,10 +1123,10 @@ export const RunsApiFp = function(configuration?: Configuration) {
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.
* 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 {ForkRequest} [forkRequest]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -1150,7 +1150,7 @@ export const RunsApiFp = function(configuration?: Configuration) {
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.
* 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.
@ -1195,7 +1195,7 @@ export const RunsApiFp = function(configuration?: Configuration) {
* Merges the stored pull request for a run on GitHub.
* @summary Merge Run Pull Request
* @param {string} id Unique run identifier (ULID).
* @param {MergeRunPullRequestRequest} mergeRunPullRequestRequest
* @param {MergeRunPullRequestRequest} mergeRunPullRequestRequest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -1221,7 +1221,7 @@ export const RunsApiFp = function(configuration?: Configuration) {
/**
* Validates and renders a workflow manifest as SVG without creating a run.
* @summary Render Workflow Graph
* @param {RenderWorkflowGraphRequest} renderWorkflowGraphRequest
* @param {RenderWorkflowGraphRequest} renderWorkflowGraphRequest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -1284,10 +1284,10 @@ export const RunsApiFp = function(configuration?: Configuration) {
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.
* 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 {RewindRequest} [rewindRequest]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -1300,7 +1300,7 @@ export const RunsApiFp = function(configuration?: Configuration) {
/**
* Validates a workflow manifest without creating a run.
* @summary Validate Workflow Manifest
* @param {RunManifest} runManifest
* @param {RunManifest} runManifest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -1314,7 +1314,7 @@ export const RunsApiFp = function(configuration?: Configuration) {
* Starts a submitted run, queuing it for execution. Provide `resume=true` to resume an interrupted run from checkpoint. Returns 409 if the run is not startable.
* @summary Start Run
* @param {string} id Unique run identifier (ULID).
* @param {StartRunRequest} [startRunRequest]
* @param {StartRunRequest} [startRunRequest]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -1325,7 +1325,7 @@ export const RunsApiFp = function(configuration?: Configuration) {
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
},
/**
* Restores an archived run to its prior terminal status. Idempotent on runs that are terminal but not archived (returns the current status without emitting an event). Returns 409 if the run is active.
* Restores an archived run to its prior terminal status. Idempotent on runs that are terminal but not archived (returns the current status without emitting an event). Returns 409 if the run is active.
* @summary Unarchive Run
* @param {string} id Unique run identifier (ULID).
* @param {*} [options] Override http request option.
@ -1360,7 +1360,7 @@ export const RunsApiFactory = function (configuration?: Configuration, basePath?
const localVarFp = RunsApiFp(configuration)
return {
/**
* Marks a terminal run (`succeeded`, `failed`, or `dead`) as `archived`. Archived runs are hidden from default listings and are read-only until unarchived. Idempotent on already-archived runs. Returns 409 if the run is not terminal.
* Marks a terminal run (`succeeded`, `failed`, or `dead`) as `archived`. Archived runs are hidden from default listings and are read-only until unarchived. Idempotent on already-archived runs. Returns 409 if the run is not terminal.
* @summary Archive Run
* @param {string} id Unique run identifier (ULID).
* @param {*} [options] Override http request option.
@ -1392,7 +1392,7 @@ export const RunsApiFactory = function (configuration?: Configuration, basePath?
/**
* Creates a new workflow run in `submitted` status from a self-contained manifest.
* @summary Create Run
* @param {RunManifest} runManifest
* @param {RunManifest} runManifest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -1403,7 +1403,7 @@ export const RunsApiFactory = function (configuration?: Configuration, basePath?
* Creates a pull request for a completed run on GitHub and persists the record on the server.
* @summary Create Run Pull Request
* @param {string} id Unique run identifier (ULID).
* @param {CreateRunPullRequestRequest} createRunPullRequestRequest
* @param {CreateRunPullRequestRequest} createRunPullRequestRequest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -1422,10 +1422,10 @@ export const RunsApiFactory = function (configuration?: Configuration, basePath?
return localVarFp.deleteRun(id, force, options).then((request) => request(axios, basePath));
},
/**
* Creates a new run from a checkpoint of the source run. The source run is left untouched.
* 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 {ForkRequest} [forkRequest]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -1443,7 +1443,7 @@ export const RunsApiFactory = function (configuration?: Configuration, basePath?
return localVarFp.getRunPullRequest(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.
* 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.
@ -1479,7 +1479,7 @@ export const RunsApiFactory = function (configuration?: Configuration, basePath?
* Merges the stored pull request for a run on GitHub.
* @summary Merge Run Pull Request
* @param {string} id Unique run identifier (ULID).
* @param {MergeRunPullRequestRequest} mergeRunPullRequestRequest
* @param {MergeRunPullRequestRequest} mergeRunPullRequestRequest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -1499,7 +1499,7 @@ export const RunsApiFactory = function (configuration?: Configuration, basePath?
/**
* Validates and renders a workflow manifest as SVG without creating a run.
* @summary Render Workflow Graph
* @param {RenderWorkflowGraphRequest} renderWorkflowGraphRequest
* @param {RenderWorkflowGraphRequest} renderWorkflowGraphRequest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -1547,10 +1547,10 @@ export const RunsApiFactory = function (configuration?: Configuration, basePath?
return localVarFp.retrieveRunGraphSource(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.
* 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 {RewindRequest} [rewindRequest]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -1560,7 +1560,7 @@ export const RunsApiFactory = function (configuration?: Configuration, basePath?
/**
* Validates a workflow manifest without creating a run.
* @summary Validate Workflow Manifest
* @param {RunManifest} runManifest
* @param {RunManifest} runManifest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -1571,7 +1571,7 @@ export const RunsApiFactory = function (configuration?: Configuration, basePath?
* Starts a submitted run, queuing it for execution. Provide `resume=true` to resume an interrupted run from checkpoint. Returns 409 if the run is not startable.
* @summary Start Run
* @param {string} id Unique run identifier (ULID).
* @param {StartRunRequest} [startRunRequest]
* @param {StartRunRequest} [startRunRequest]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -1579,7 +1579,7 @@ export const RunsApiFactory = function (configuration?: Configuration, basePath?
return localVarFp.startRun(id, startRunRequest, options).then((request) => request(axios, basePath));
},
/**
* Restores an archived run to its prior terminal status. Idempotent on runs that are terminal but not archived (returns the current status without emitting an event). Returns 409 if the run is active.
* Restores an archived run to its prior terminal status. Idempotent on runs that are terminal but not archived (returns the current status without emitting an event). Returns 409 if the run is active.
* @summary Unarchive Run
* @param {string} id Unique run identifier (ULID).
* @param {*} [options] Override http request option.
@ -1606,7 +1606,7 @@ export const RunsApiFactory = function (configuration?: Configuration, basePath?
*/
export class RunsApi extends BaseAPI {
/**
* Marks a terminal run (`succeeded`, `failed`, or `dead`) as `archived`. Archived runs are hidden from default listings and are read-only until unarchived. Idempotent on already-archived runs. Returns 409 if the run is not terminal.
* Marks a terminal run (`succeeded`, `failed`, or `dead`) as `archived`. Archived runs are hidden from default listings and are read-only until unarchived. Idempotent on already-archived runs. Returns 409 if the run is not terminal.
* @summary Archive Run
* @param {string} id Unique run identifier (ULID).
* @param {*} [options] Override http request option.
@ -1641,7 +1641,7 @@ export class RunsApi extends BaseAPI {
/**
* Creates a new workflow run in `submitted` status from a self-contained manifest.
* @summary Create Run
* @param {RunManifest} runManifest
* @param {RunManifest} runManifest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -1653,7 +1653,7 @@ export class RunsApi extends BaseAPI {
* Creates a pull request for a completed run on GitHub and persists the record on the server.
* @summary Create Run Pull Request
* @param {string} id Unique run identifier (ULID).
* @param {CreateRunPullRequestRequest} createRunPullRequestRequest
* @param {CreateRunPullRequestRequest} createRunPullRequestRequest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -1674,10 +1674,10 @@ export class RunsApi extends BaseAPI {
}
/**
* Creates a new run from a checkpoint of the source run. The source run is left untouched.
* 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 {ForkRequest} [forkRequest]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -1697,7 +1697,7 @@ export class RunsApi extends BaseAPI {
}
/**
* Returns checkpoint timeline entries from durable run-store checkpoints. Metadata branches are write-only archives and are not read by this endpoint.
* 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.
@ -1736,7 +1736,7 @@ export class RunsApi extends BaseAPI {
* Merges the stored pull request for a run on GitHub.
* @summary Merge Run Pull Request
* @param {string} id Unique run identifier (ULID).
* @param {MergeRunPullRequestRequest} mergeRunPullRequestRequest
* @param {MergeRunPullRequestRequest} mergeRunPullRequestRequest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -1758,7 +1758,7 @@ export class RunsApi extends BaseAPI {
/**
* Validates and renders a workflow manifest as SVG without creating a run.
* @summary Render Workflow Graph
* @param {RenderWorkflowGraphRequest} renderWorkflowGraphRequest
* @param {RenderWorkflowGraphRequest} renderWorkflowGraphRequest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -1811,10 +1811,10 @@ export class RunsApi extends BaseAPI {
}
/**
* 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.
* 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 {RewindRequest} [rewindRequest]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -1825,7 +1825,7 @@ export class RunsApi extends BaseAPI {
/**
* Validates a workflow manifest without creating a run.
* @summary Validate Workflow Manifest
* @param {RunManifest} runManifest
* @param {RunManifest} runManifest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -1837,7 +1837,7 @@ export class RunsApi extends BaseAPI {
* Starts a submitted run, queuing it for execution. Provide `resume=true` to resume an interrupted run from checkpoint. Returns 409 if the run is not startable.
* @summary Start Run
* @param {string} id Unique run identifier (ULID).
* @param {StartRunRequest} [startRunRequest]
* @param {StartRunRequest} [startRunRequest]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
@ -1846,7 +1846,7 @@ export class RunsApi extends BaseAPI {
}
/**
* Restores an archived run to its prior terminal status. Idempotent on runs that are terminal but not archived (returns the current status without emitting an event). Returns 409 if the run is active.
* Restores an archived run to its prior terminal status. Idempotent on runs that are terminal but not archived (returns the current status without emitting an event). Returns 409 if the run is active.
* @summary Unarchive Run
* @param {string} id Unique run identifier (ULID).
* @param {*} [options] Override http request option.
@ -1867,3 +1867,4 @@ export class RunsApi extends BaseAPI {
return RunsApiFp(this.configuration).unpauseRun(id, options).then((request) => request(this.axios, this.basePath));
}
}

View file

@ -5,7 +5,7 @@
* HTTP API for managing Fabro workflow run executions.
*
* The version of the OpenAPI document: 0.1.0
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
@ -22,3 +22,6 @@ export const DirtyStatus = {
} as const;
export type DirtyStatus = typeof DirtyStatus[keyof typeof DirtyStatus];

View file

@ -5,7 +5,7 @@
* HTTP API for managing Fabro workflow run executions.
*
* The version of the OpenAPI document: 0.1.0
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
@ -21,3 +21,4 @@ export interface ForkSourceRef {
'source_run_id': string;
'checkpoint_sha': string;
}

View file

@ -31,13 +31,9 @@ export interface ManifestArgs {
'no_retro'?: boolean;
'preserve_sandbox'?: boolean;
/**
* Run against the submitted source directory directly.
* Override `run.sandbox.local.worktree_mode` (e.g. `never` for `--in-place`).
*/
'in_place'?: boolean;
/**
* Required with `in_place`; disables git checkpointing.
*/
'allow_no_checkpoints'?: boolean;
'worktree_mode'?: string;
'label'?: Array<string>;
}

View file

@ -5,7 +5,7 @@
* HTTP API for managing Fabro workflow run executions.
*
* The version of the OpenAPI document: 0.1.0
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
@ -28,3 +28,6 @@ export interface PreRunGitContext {
'local_dirty': DirtyStatus;
'push_outcome': PreRunPushOutcome;
}

View file

@ -5,7 +5,7 @@
* HTTP API for managing Fabro workflow run executions.
*
* The version of the OpenAPI document: 0.1.0
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
@ -34,3 +34,5 @@ export const PreRunPushOutcomeTypeEnum = {
} as const;
export type PreRunPushOutcomeTypeEnum = typeof PreRunPushOutcomeTypeEnum[keyof typeof PreRunPushOutcomeTypeEnum];

View file

@ -5,7 +5,7 @@
* HTTP API for managing Fabro workflow run executions.
*
* The version of the OpenAPI document: 0.1.0
*
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
@ -26,7 +26,7 @@ import type { PreRunGitContext } from './pre-run-git-context';
export interface RunSpec {
'run_id': string;
/**
* The persisted dense `WorkflowSettings` snapshot used for a specific run. This matches the resolved run settings recorded at launch time.
* The persisted dense `WorkflowSettings` snapshot used for a specific run. This matches the resolved run settings recorded at launch time.
*/
'settings': { [key: string]: any; };
'graph': { [key: string]: any; };
@ -42,3 +42,4 @@ export interface RunSpec {
'fork_source_ref'?: ForkSourceRef | null;
'checkpoints_disabled': boolean;
}