diff --git a/Cargo.lock b/Cargo.lock index bb7af06ce..af15ac832 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1715,6 +1715,7 @@ name = "fabro-graphviz" version = "0.176.2" dependencies = [ "anyhow", + "fabro-graphviz-sys", "fabro-types", "nom", "regex", diff --git a/docs/administration/troubleshooting.mdx b/docs/administration/troubleshooting.mdx index ede660bd9..90d34559d 100644 --- a/docs/administration/troubleshooting.mdx +++ b/docs/administration/troubleshooting.mdx @@ -18,7 +18,6 @@ It checks: - Server-reported LLM provider connectivity - GitHub App, sandbox, and Brave Search credentials - Server authentication and crypto configuration -- Server-side Graphviz availability ## Common issues diff --git a/docs/api-reference/fabro-api.yaml b/docs/api-reference/fabro-api.yaml index 66b84691e..26a70e49f 100644 --- a/docs/api-reference/fabro-api.yaml +++ b/docs/api-reference/fabro-api.yaml @@ -189,7 +189,7 @@ paths: operationId: renderWorkflowGraph tags: [Runs] summary: Render Workflow Graph - description: Validates and renders a workflow manifest as SVG or PNG without creating a run. + description: Validates and renders a workflow manifest as SVG without creating a run. requestBody: required: true content: @@ -204,22 +204,12 @@ paths: schema: type: string format: binary - image/png: - schema: - type: string - format: binary "400": description: Invalid manifest or workflow content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" - "502": - description: Graphviz rendering failed - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" /api/v1/runs/{id}: get: @@ -398,12 +388,6 @@ paths: application/json: schema: $ref: "#/components/schemas/ErrorResponse" - "502": - description: Graphviz not available - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" /api/v1/runs/{id}/checkpoint: get: @@ -2337,7 +2321,6 @@ components: type: string enum: - svg - - png RenderWorkflowGraphDirection: type: string diff --git a/docs/api-reference/overview.mdx b/docs/api-reference/overview.mdx index f9c8d2d9d..7c8a4e359 100644 --- a/docs/api-reference/overview.mdx +++ b/docs/api-reference/overview.mdx @@ -114,7 +114,7 @@ Each entry in the `errors` array contains: | `409 Conflict` | The resource is in a conflicting state | Answering a question on a run that isn't running yet | | `410 Gone` | The resource is no longer available | SSE event stream has closed | | `501 Not Implemented` | The endpoint exists but is not yet implemented | Placeholder routes | -| `502 Bad Gateway` | An upstream dependency failed | Graphviz `dot` not installed or returned an error | +| `502 Bad Gateway` | An upstream dependency failed | An upstream service returned an error | ## Pagination diff --git a/docs/changelog/2026-03-11.mdx b/docs/changelog/2026-03-11.mdx index 948006e21..b4230d74a 100644 --- a/docs/changelog/2026-03-11.mdx +++ b/docs/changelog/2026-03-11.mdx @@ -34,11 +34,11 @@ After installation, AI assistants in your editor can use the skill when generati ## Visualize workflows with fabro graph -`fabro graph` renders your workflow DOT graphs as SVG or PNG, so you can see the full structure of your workflow at a glance. Requires Graphviz `dot` to be installed. +`fabro graph` renders your workflow DOT graphs as SVG, so you can see the full structure of your workflow at a glance. ```bash fabro graph # SVG to stdout -fabro graph -o flow.png # PNG to file +fabro graph -o flow.svg # SVG to file ``` ## More diff --git a/docs/reference/cli.mdx b/docs/reference/cli.mdx index 77f56d2a3..f113333b8 100644 --- a/docs/reference/cli.mdx +++ b/docs/reference/cli.mdx @@ -493,18 +493,18 @@ fabro system df -v ## `fabro graph` -Render a workflow graph as SVG or PNG. Requires [Graphviz](https://graphviz.org) (`dot`) to be installed. SVG output includes styled defaults (teal node strokes, clean typography, transparent background) and automatic dark mode support via `prefers-color-scheme` media queries. +Render a workflow graph as SVG. SVG output includes styled defaults (teal node strokes, clean typography, transparent background) and automatic dark mode support via `prefers-color-scheme` media queries. ```bash fabro graph workflow.fabro -fabro graph workflow.fabro --format png -o diagram.png -fabro graph run.toml --format svg +fabro graph workflow.fabro -o diagram.svg +fabro graph run.toml ``` | Argument / Flag | Description | |---|---| | `` | Path to a `.fabro` workflow file or `.toml` run config (required) | -| `--format ` | Output format: `svg` (default) or `png` | +| `--format ` | Output format: `svg` (default) | | `-o, --output ` | Output file path. Defaults to stdout. | | `-d, --direction ` | Graph direction: `lr` or `tb`. If omitted, uses the Graphviz file's own `rankdir`. | diff --git a/lib/crates/fabro-cli/src/args.rs b/lib/crates/fabro-cli/src/args.rs index e07f2d957..6295c0012 100644 --- a/lib/crates/fabro-cli/src/args.rs +++ b/lib/crates/fabro-cli/src/args.rs @@ -3,7 +3,6 @@ use std::path::{Path, PathBuf}; use clap::{Args, Subcommand, ValueEnum}; use fabro_agent::cli::AgentArgs; -use fabro_graphviz::render::GraphFormat; pub(crate) const LONG_VERSION: &str = concat!( env!("CARGO_PKG_VERSION"), @@ -306,23 +305,12 @@ impl fmt::Display for GraphDirection { #[derive(Debug, Clone, Copy, ValueEnum)] pub(crate) enum GraphOutputFormat { Svg, - Png, -} - -impl From for GraphFormat { - fn from(value: GraphOutputFormat) -> Self { - match value { - GraphOutputFormat::Svg => Self::Svg, - GraphOutputFormat::Png => Self::Png, - } - } } impl fmt::Display for GraphOutputFormat { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { Self::Svg => write!(f, "svg"), - Self::Png => write!(f, "png"), } } } @@ -935,7 +923,7 @@ pub(crate) enum Commands { Preflight(PreflightArgs), /// Validate a workflow Validate(ValidateArgs), - /// Render a workflow graph as SVG or PNG + /// Render a workflow graph as SVG Graph(GraphArgs), /// Parse a DOT file and print its AST #[command(hide = true)] diff --git a/lib/crates/fabro-cli/src/commands/doctor.rs b/lib/crates/fabro-cli/src/commands/doctor.rs index f62ed7704..5ca10f6ba 100644 --- a/lib/crates/fabro-cli/src/commands/doctor.rs +++ b/lib/crates/fabro-cli/src/commands/doctor.rs @@ -38,16 +38,7 @@ pub(crate) enum ProbeOutcome { Ok { version: Option }, } -static DOT_RE: LazyLock = - LazyLock::new(|| Regex::new(r"graphviz version (\d+)\.(\d+)\.(\d+)").unwrap()); - -pub(crate) const DEP_SPECS: &[DepSpec] = &[DepSpec { - name: "dot", - command: &["dot", "-V"], - required: false, - min_version: Version::new(2, 0, 0), - pattern: &DOT_RE, -}]; +pub(crate) const DEP_SPECS: &[DepSpec] = &[]; fn parse_version(re: &Regex, output: &str) -> Option { let caps = re.captures(output)?; @@ -661,19 +652,6 @@ mod tests { assert_eq!(result.status, CheckStatus::Warning); } - #[test] - fn parse_version_dot() { - assert_eq!( - parse_version(&DOT_RE, "dot - graphviz version 12.2.1 (20241206.2024)"), - Some(Version::new(12, 2, 1)) - ); - } - - #[test] - fn parse_version_garbage_returns_none() { - assert_eq!(parse_version(&DOT_RE, "no version here"), None); - } - #[test] fn render_report_text_without_color_has_no_ansi() { let report = CheckReport { @@ -701,13 +679,16 @@ mod tests { assert!(rendered.contains("[✓] Configuration (loaded)")); } + static TEST_RE: LazyLock = + LazyLock::new(|| Regex::new(r"version (\d+)\.(\d+)\.(\d+)").unwrap()); + fn spec(name: &'static str, required: bool, min_version: Version) -> DepSpec { DepSpec { name, command: &["echo", "unused"], required, min_version, - pattern: &DOT_RE, + pattern: &TEST_RE, } } diff --git a/lib/crates/fabro-cli/src/commands/graph.rs b/lib/crates/fabro-cli/src/commands/graph.rs index d3b42b19c..5f9b0afc3 100644 --- a/lib/crates/fabro-cli/src/commands/graph.rs +++ b/lib/crates/fabro-cli/src/commands/graph.rs @@ -9,7 +9,7 @@ use fabro_util::printer::Printer; use fabro_util::terminal::Styles; use tracing::debug; -use crate::args::{GlobalArgs, GraphArgs, GraphDirection, GraphOutputFormat}; +use crate::args::{GlobalArgs, GraphArgs, GraphDirection}; use crate::command_context::CommandContext; use crate::commands::run::output::api_diagnostics_to_local; use crate::manifest_builder::{ManifestBuildInput, build_run_manifest}; @@ -50,10 +50,7 @@ pub(crate) async fn run( let rendered = client .render_workflow_graph(types::RenderWorkflowGraphRequest { manifest: built.manifest, - format: Some(match args.format { - GraphOutputFormat::Svg => types::RenderWorkflowGraphFormat::Svg, - GraphOutputFormat::Png => types::RenderWorkflowGraphFormat::Png, - }), + format: Some(types::RenderWorkflowGraphFormat::Svg), direction: args.direction.map(|direction| match direction { GraphDirection::Lr => types::RenderWorkflowGraphDirection::Lr, GraphDirection::Tb => types::RenderWorkflowGraphDirection::Tb, diff --git a/lib/crates/fabro-cli/src/commands/install.rs b/lib/crates/fabro-cli/src/commands/install.rs index 2e0116f70..289c01511 100644 --- a/lib/crates/fabro-cli/src/commands/install.rs +++ b/lib/crates/fabro-cli/src/commands/install.rs @@ -415,8 +415,6 @@ fn install_github_app_handoff_event(url: &str, owner: &GitHubAppOwner) -> serde_ #[async_trait] trait InstallInputSource { - async fn choose_graphviz_install(&self, dot_missing: bool) -> Result; - async fn collect_llm_selection( &self, facts: &InstallFacts, @@ -439,15 +437,6 @@ struct InteractiveInstallInputSource; #[async_trait] impl InstallInputSource for InteractiveInstallInputSource { - async fn choose_graphviz_install(&self, dot_missing: bool) -> Result { - if !dot_missing { - return Ok(false); - } - - spawn_blocking(|| prompt_confirm("Graphviz (dot) not found. Install via Homebrew?", true)) - .await? - } - async fn collect_llm_selection( &self, facts: &InstallFacts, @@ -676,10 +665,6 @@ impl NonInteractiveInstallInputSource { #[async_trait] impl InstallInputSource for NonInteractiveInstallInputSource { - async fn choose_graphviz_install(&self, _dot_missing: bool) -> Result { - Ok(false) - } - async fn collect_llm_selection( &self, _facts: &InstallFacts, @@ -1323,10 +1308,6 @@ async fn run_install_inner( let facts = { let dep_outcomes = doctor::probe_system_deps().await; let dep_check = doctor::check_system_deps(doctor::DEP_SPECS, &dep_outcomes); - let dot_missing = doctor::DEP_SPECS - .iter() - .position(|spec| spec.name == "dot") - .is_some_and(|idx| matches!(dep_outcomes[idx], doctor::ProbeOutcome::NotFound)); fabro_util::printerr!( printer, @@ -1342,17 +1323,6 @@ async fn run_install_inner( bail!("Install missing required tools before running setup"); } - if input_source.choose_graphviz_install(dot_missing).await? { - let status = TokioCommand::new("brew") - .args(["install", "graphviz"]) - .status() - .await - .context("failed to run brew install graphviz")?; - if !status.success() { - fabro_util::printerr!(printer, " Warning: brew install graphviz failed"); - } - } - for detail in &dep_check.details { fabro_util::printerr!(printer, " {}", detail.text); } diff --git a/lib/crates/fabro-cli/tests/it/cmd/fabro.rs b/lib/crates/fabro-cli/tests/it/cmd/fabro.rs index c9be584b0..8d920e61b 100644 --- a/lib/crates/fabro-cli/tests/it/cmd/fabro.rs +++ b/lib/crates/fabro-cli/tests/it/cmd/fabro.rs @@ -23,7 +23,7 @@ fn help() { wait Block until a workflow run completes preflight Validate run configuration without executing validate Validate a workflow - graph Render a workflow graph as SVG or PNG + graph Render a workflow graph as SVG artifact Inspect and copy run artifacts (screenshots, reports, traces) store Export store-backed run state for debugging rm Remove one or more workflow runs diff --git a/lib/crates/fabro-cli/tests/it/cmd/graph.rs b/lib/crates/fabro-cli/tests/it/cmd/graph.rs index 5f4a3dc14..7535cf24d 100644 --- a/lib/crates/fabro-cli/tests/it/cmd/graph.rs +++ b/lib/crates/fabro-cli/tests/it/cmd/graph.rs @@ -11,7 +11,7 @@ fn help() { success: true exit_code: 0 ----- stdout ----- - Render a workflow graph as SVG or PNG + Render a workflow graph as SVG Usage: fabro graph [OPTIONS] @@ -39,7 +39,7 @@ fn help() { Output format [default: svg] - [possible values: svg, png] + [possible values: svg] --no-upgrade-check Disable automatic upgrade check diff --git a/lib/crates/fabro-cli/tests/it/cmd/json_global.rs b/lib/crates/fabro-cli/tests/it/cmd/json_global.rs index 86383ae51..4b5a021b3 100644 --- a/lib/crates/fabro-cli/tests/it/cmd/json_global.rs +++ b/lib/crates/fabro-cli/tests/it/cmd/json_global.rs @@ -1,24 +1,8 @@ -#![expect( - clippy::disallowed_methods, - reason = "These CLI integration tests synchronously probe for dot before exercising JSON output paths." -)] - -use std::process::Command; - use fabro_test::test_context; use serde_json::Value; use super::support::{fixture, output_stderr, output_stdout, setup_completed_fast_dry_run}; -fn dot_is_available() -> bool { - Command::new("dot") - .arg("-V") - .stdout(std::process::Stdio::null()) - .stderr(std::process::Stdio::null()) - .status() - .is_ok() -} - #[test] fn completion_rejects_json() { let context = test_context!(); @@ -143,10 +127,6 @@ fn graph_json_without_output_is_rejected() { #[test] fn graph_json_with_output_reports_file() { - if !dot_is_available() { - return; - } - let context = test_context!(); let output_path = context.temp_dir.join("graph.svg"); let workflow = fixture("simple.fabro"); diff --git a/lib/crates/fabro-graphviz/Cargo.toml b/lib/crates/fabro-graphviz/Cargo.toml index c95ba3713..c4203551d 100644 --- a/lib/crates/fabro-graphviz/Cargo.toml +++ b/lib/crates/fabro-graphviz/Cargo.toml @@ -14,6 +14,7 @@ workspace = true [dependencies] anyhow.workspace = true +fabro-graphviz-sys = { path = "../fabro-graphviz-sys" } fabro-types = { path = "../fabro-types" } nom = "7" regex = { workspace = true } diff --git a/lib/crates/fabro-graphviz/src/render.rs b/lib/crates/fabro-graphviz/src/render.rs index 87178786d..1c871f9a2 100644 --- a/lib/crates/fabro-graphviz/src/render.rs +++ b/lib/crates/fabro-graphviz/src/render.rs @@ -1,29 +1,5 @@ -use std::fmt; -use std::io::Write; -use std::process::Command; use std::sync::LazyLock; -use anyhow::bail; - -/// Output format for graph rendering. -#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)] -pub enum GraphFormat { - /// Scalable Vector Graphics - #[default] - Svg, - /// Portable Network Graphics - Png, -} - -impl fmt::Display for GraphFormat { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - match self { - Self::Svg => write!(f, "svg"), - Self::Png => write!(f, "png"), - } - } -} - /// Dark mode CSS injected into SVG output (leading newline included for /// insertion). const DARK_MODE_STYLE: &str = r##" @@ -88,60 +64,12 @@ pub fn postprocess_svg(raw: Vec) -> Vec { svg.into_bytes() } -/// Render styled DOT source into the given format via the `dot` command. -#[expect( - clippy::disallowed_methods, - reason = "This synchronous rendering helper is intentionally called behind spawn_blocking from async server code." -)] -pub fn render_dot(source: &str, format: GraphFormat) -> anyhow::Result> { +/// Render styled DOT source into SVG via the vendored Graphviz library. +pub fn render_dot(source: &str) -> anyhow::Result> { let styled_source = inject_dot_style_defaults(source); - let mut child = match Command::new("dot") - .arg(format!("-T{format}")) - .stdin(std::process::Stdio::piped()) - .stdout(std::process::Stdio::piped()) - .stderr(std::process::Stdio::piped()) - .spawn() - { - Ok(child) => child, - Err(err) if err.kind() == std::io::ErrorKind::NotFound => { - bail!("Graphviz is not installed. Install it with: brew install graphviz"); - } - Err(err) => { - bail!("Failed to run dot: {err}"); - } - }; - - if let Some(mut stdin) = child.stdin.take() { - stdin.write_all(styled_source.as_bytes())?; - } - - let output = child.wait_with_output()?; - - if !output.status.success() { - let stderr = String::from_utf8_lossy(&output.stderr); - bail!("dot failed: {stderr}"); - } - - let raw = output.stdout; - if matches!(format, GraphFormat::Svg) { - Ok(postprocess_svg(raw)) - } else { - Ok(raw) - } -} - -#[cfg(test)] -#[expect( - clippy::disallowed_methods, - reason = "This synchronous test probe checks whether dot is installed before running render assertions." -)] -fn dot_is_available() -> bool { - Command::new("dot") - .arg("-V") - .stdout(std::process::Stdio::null()) - .stderr(std::process::Stdio::null()) - .status() - .is_ok() + let raw = fabro_graphviz_sys::render_dot_to_svg(&styled_source) + .map_err(|e| anyhow::anyhow!("Graphviz rendering failed: {e}"))?; + Ok(postprocess_svg(raw)) } #[cfg(test)] @@ -173,14 +101,39 @@ mod tests { } #[test] - fn render_dot_svg_or_png_if_graphviz_is_available() { - if !dot_is_available() { - return; - } - let svg = render_dot("digraph { a -> b }", GraphFormat::Svg).unwrap(); + fn render_dot_produces_svg() { + let svg = render_dot("digraph { a -> b }").unwrap(); assert!(String::from_utf8(svg).unwrap().contains(" b }", GraphFormat::Png).unwrap(); - assert!(!png.is_empty()); + #[test] + fn render_dot_complex_graph() { + let source = r#"digraph { + subgraph cluster_0 { + label = "process #1"; + a0 -> a1 -> a2 -> a3; + } + subgraph cluster_1 { + label = "process #2"; + b0 -> b1 -> b2 -> b3; + } + start -> a0; + start -> b0; + a1 -> b3; + b2 -> a3; + a3 -> end; + b3 -> end; + }"#; + let svg = render_dot(source).unwrap(); + let svg_str = String::from_utf8(svg).unwrap(); + assert!(svg_str.contains(" detect\n detect -> exit [label=\"No drift\"]\n detect -> propose [label=\"Drift found\"]\n propose -> review\n review -> propose [label=\"Revise\"]\n review -> apply [label=\"Accept\"]\n apply -> exit\n}"; - crate::server::render_graph_bytes(dot_source, fabro_graphviz::render::GraphFormat::Svg).await + crate::server::render_graph_bytes(dot_source).await } pub(crate) async fn list_secrets( diff --git a/lib/crates/fabro-server/src/diagnostics.rs b/lib/crates/fabro-server/src/diagnostics.rs index 88da93991..5f87a612d 100644 --- a/lib/crates/fabro-server/src/diagnostics.rs +++ b/lib/crates/fabro-server/src/diagnostics.rs @@ -1,5 +1,4 @@ use std::path::PathBuf; -use std::sync::LazyLock; use std::time::Duration; use base64::Engine as _; @@ -13,10 +12,7 @@ use fabro_util::check_report::{CheckDetail, CheckResult, CheckSection, CheckStat use fabro_util::dev_token::validate_dev_token_format; use fabro_util::session_secret; use fabro_util::version::FABRO_VERSION; -use regex::Regex; -use semver::Version; use serde::Serialize; -use tokio::process::Command; use tokio::time::timeout; use crate::server::AppState; @@ -41,69 +37,6 @@ pub struct DiagnosticsReport { pub sections: Vec, } -#[derive(Debug, Clone, PartialEq)] -enum ProbeOutcome { - NotFound, - Failed, - Ok { version: Option }, -} - -static DOT_RE: LazyLock = - LazyLock::new(|| Regex::new(r"graphviz version (\d+)\.(\d+)\.(\d+)").unwrap()); - -fn parse_version(re: &Regex, output: &str) -> Option { - let caps = re.captures(output)?; - Some(Version::new( - caps[1].parse().ok()?, - caps[2].parse().ok()?, - caps[3].parse().ok()?, - )) -} - -async fn probe_dot() -> ProbeOutcome { - let result = Command::new("dot").arg("-V").output().await.ok(); - match result { - None => ProbeOutcome::NotFound, - Some(output) if !output.status.success() => ProbeOutcome::Failed, - Some(output) => { - let stdout = String::from_utf8_lossy(&output.stdout); - let stderr = String::from_utf8_lossy(&output.stderr); - let version = - parse_version(&DOT_RE, &stdout).or_else(|| parse_version(&DOT_RE, &stderr)); - ProbeOutcome::Ok { version } - } - } -} - -async fn check_dot() -> CheckResult { - let outcome = probe_dot().await; - let (status, summary, remediation) = match &outcome { - ProbeOutcome::NotFound => ( - CheckStatus::Warning, - "not installed".to_string(), - Some("Install Graphviz to enable workflow graph rendering".to_string()), - ), - ProbeOutcome::Failed => ( - CheckStatus::Warning, - "command failed".to_string(), - Some("Check that `dot -V` succeeds on the server host".to_string()), - ), - ProbeOutcome::Ok { - version: Some(version), - } => (CheckStatus::Pass, format!("dot {version}"), None), - ProbeOutcome::Ok { version: None } => { - (CheckStatus::Pass, "dot available".to_string(), None) - } - }; - CheckResult { - name: "dot".to_string(), - status, - summary, - details: Vec::new(), - remediation, - } -} - fn decode_pem_value(name: &str, value: &str) -> Result { if value.starts_with("-----") { return Ok(value.to_string()); @@ -150,11 +83,10 @@ fn validate_session_secret(value: &str) -> Result<(), String> { } pub async fn run_all(state: &AppState) -> DiagnosticsReport { - let (llm, github, brave, dot) = tokio::join!( + let (llm, github, brave) = tokio::join!( check_llm_providers(state), check_github_app(state), check_brave_search(state), - check_dot(), ); let sandbox = check_sandbox(state); let crypto = check_crypto(state); @@ -166,10 +98,6 @@ pub async fn run_all(state: &AppState) -> DiagnosticsReport { title: "Credentials".to_string(), checks: vec![llm, github, sandbox, brave], }, - CheckSection { - title: "System".to_string(), - checks: vec![dot], - }, CheckSection { title: "Configuration".to_string(), checks: vec![crypto], diff --git a/lib/crates/fabro-server/src/server.rs b/lib/crates/fabro-server/src/server.rs index 6e5ae3c9d..1b742a5fc 100644 --- a/lib/crates/fabro-server/src/server.rs +++ b/lib/crates/fabro-server/src/server.rs @@ -30,8 +30,8 @@ pub use fabro_api::types::{ DiskUsageSummaryRow, EventEnvelope as ApiEventEnvelope, ModelReference, PaginatedEventList, PaginatedRunList, PaginationMeta, PreflightResponse, PreviewUrlRequest, PreviewUrlResponse, PruneRunEntry, PruneRunsRequest, PruneRunsResponse, QuestionType as ApiQuestionType, - RenderWorkflowGraphDirection, RenderWorkflowGraphFormat, RenderWorkflowGraphRequest, - RunArtifactEntry, RunArtifactListResponse, RunBilling, RunBillingStage, RunBillingTotals, + RenderWorkflowGraphDirection, RenderWorkflowGraphRequest, RunArtifactEntry, + RunArtifactListResponse, RunBilling, RunBillingStage, RunBillingTotals, RunControlAction as ApiRunControlAction, RunError, RunManifest, RunStatus, RunStatusResponse, SandboxFileEntry, SandboxFileListResponse, SecretType as ApiSecretType, ServerSettings, SshAccessRequest, SshAccessResponse, StartRunRequest, StatusReason as ApiStatusReason, @@ -39,7 +39,6 @@ pub use fabro_api::types::{ }; use fabro_auth::parse_credential_secret; use fabro_config::{Storage, resolve_server_from_file}; -use fabro_graphviz::render::GraphFormat; use fabro_interview::{ Answer, ControlInterviewer, Interviewer, Question, QuestionType, WorkerControlEnvelope, }; @@ -3590,16 +3589,12 @@ async fn render_graph_from_manifest( return ApiError::bad_request("Validation failed").into_response(); } - let format = match req.format.unwrap_or(RenderWorkflowGraphFormat::Svg) { - RenderWorkflowGraphFormat::Svg => GraphFormat::Svg, - RenderWorkflowGraphFormat::Png => GraphFormat::Png, - }; let direction = req.direction.as_ref().map(|direction| match direction { RenderWorkflowGraphDirection::Lr => "LR", RenderWorkflowGraphDirection::Tb => "TB", }); let dot_source = run_manifest::graph_source(&prepared, direction); - render_graph_bytes(&dot_source, format).await + render_graph_bytes(&dot_source).await } async fn start_run( @@ -6178,18 +6173,17 @@ async fn create_completion( } } -/// Render DOT source to a styled image via `render_dot` on a blocking thread. -pub(crate) async fn render_graph_bytes(dot_source: &str, format: GraphFormat) -> Response { +/// Render DOT source to a styled SVG image via `render_dot` on a blocking +/// thread. +pub(crate) async fn render_graph_bytes(dot_source: &str) -> Response { use fabro_graphviz::render::render_dot; - let content_type = match format { - GraphFormat::Svg => "image/svg+xml", - GraphFormat::Png => "image/png", - }; let source = dot_source.to_owned(); - match spawn_blocking(move || render_dot(&source, format)).await { - Ok(Ok(bytes)) => (StatusCode::OK, [("content-type", content_type)], bytes).into_response(), - Ok(Err(e)) => ApiError::new(StatusCode::BAD_GATEWAY, e.to_string()).into_response(), + match spawn_blocking(move || render_dot(&source)).await { + Ok(Ok(bytes)) => { + (StatusCode::OK, [("content-type", "image/svg+xml")], bytes).into_response() + } + Ok(Err(e)) => ApiError::new(StatusCode::BAD_REQUEST, e.to_string()).into_response(), Err(e) => ApiError::new(StatusCode::INTERNAL_SERVER_ERROR, e.to_string()).into_response(), } } @@ -6211,13 +6205,13 @@ async fn get_graph( } }; if !live_dot_source.is_empty() { - return render_graph_bytes(&live_dot_source, GraphFormat::Svg).await; + return render_graph_bytes(&live_dot_source).await; } match state.store.open_run_reader(&id).await { Ok(run_store) => match run_store.state().await { Ok(run_state) => match run_state.graph_source { - Some(dot_source) => render_graph_bytes(&dot_source, GraphFormat::Svg).await, + Some(dot_source) => render_graph_bytes(&dot_source).await, None => ApiError::new(StatusCode::NOT_FOUND, "Graph not found.").into_response(), }, Err(err) => ApiError::new(StatusCode::BAD_GATEWAY, err.to_string()).into_response(), @@ -7830,11 +7824,6 @@ slug = "fabro" let response = app.oneshot(req).await.unwrap(); - // If graphviz is not installed, we get 502 — skip assertion - if response.status() == StatusCode::BAD_GATEWAY { - return; - } - assert_eq!(response.status(), StatusCode::OK); let content_type = response @@ -7886,10 +7875,6 @@ slug = "fabro" let response = app.oneshot(req).await.unwrap(); - if response.status() == StatusCode::BAD_GATEWAY { - return; - } - assert_eq!(response.status(), StatusCode::OK); assert_eq!( response diff --git a/lib/packages/fabro-api-client/src/api/billing-api.ts b/lib/packages/fabro-api-client/src/api/billing-api.ts index 8c40c3d61..d79f0c754 100644 --- a/lib/packages/fabro-api-client/src/api/billing-api.ts +++ b/lib/packages/fabro-api-client/src/api/billing-api.ts @@ -47,8 +47,7 @@ export const BillingApiAxiosParamCreator = function (configuration?: Configurati const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required diff --git a/lib/packages/fabro-api-client/src/api/completions-api.ts b/lib/packages/fabro-api-client/src/api/completions-api.ts index e30bb2719..1eaf59026 100644 --- a/lib/packages/fabro-api-client/src/api/completions-api.ts +++ b/lib/packages/fabro-api-client/src/api/completions-api.ts @@ -54,8 +54,7 @@ export const CompletionsApiAxiosParamCreator = function (configuration?: Configu const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required diff --git a/lib/packages/fabro-api-client/src/api/discovery-api.ts b/lib/packages/fabro-api-client/src/api/discovery-api.ts index 3eb85629c..e8f950075 100644 --- a/lib/packages/fabro-api-client/src/api/discovery-api.ts +++ b/lib/packages/fabro-api-client/src/api/discovery-api.ts @@ -145,8 +145,7 @@ export const DiscoveryApiAxiosParamCreator = function (configuration?: Configura const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -182,8 +181,7 @@ export const DiscoveryApiAxiosParamCreator = function (configuration?: Configura const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required diff --git a/lib/packages/fabro-api-client/src/api/human-in-the-loop-api.ts b/lib/packages/fabro-api-client/src/api/human-in-the-loop-api.ts index 9dd157077..9dc565b77 100644 --- a/lib/packages/fabro-api-client/src/api/human-in-the-loop-api.ts +++ b/lib/packages/fabro-api-client/src/api/human-in-the-loop-api.ts @@ -68,8 +68,7 @@ export const HumanInTheLoopApiAxiosParamCreator = function (configuration?: Conf const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -114,8 +113,7 @@ export const HumanInTheLoopApiAxiosParamCreator = function (configuration?: Conf const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -160,8 +158,7 @@ export const HumanInTheLoopApiAxiosParamCreator = function (configuration?: Conf const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -207,8 +204,7 @@ export const HumanInTheLoopApiAxiosParamCreator = function (configuration?: Conf const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -260,8 +256,7 @@ export const HumanInTheLoopApiAxiosParamCreator = function (configuration?: Conf const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -315,8 +310,7 @@ export const HumanInTheLoopApiAxiosParamCreator = function (configuration?: Conf const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -369,8 +363,7 @@ export const HumanInTheLoopApiAxiosParamCreator = function (configuration?: Conf const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required diff --git a/lib/packages/fabro-api-client/src/api/insights-api.ts b/lib/packages/fabro-api-client/src/api/insights-api.ts index 8526863b8..7b1b6f028 100644 --- a/lib/packages/fabro-api-client/src/api/insights-api.ts +++ b/lib/packages/fabro-api-client/src/api/insights-api.ts @@ -62,8 +62,7 @@ export const InsightsApiAxiosParamCreator = function (configuration?: Configurat const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -105,8 +104,7 @@ export const InsightsApiAxiosParamCreator = function (configuration?: Configurat const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -145,8 +143,7 @@ export const InsightsApiAxiosParamCreator = function (configuration?: Configurat const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -186,8 +183,7 @@ export const InsightsApiAxiosParamCreator = function (configuration?: Configurat const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -233,8 +229,7 @@ export const InsightsApiAxiosParamCreator = function (configuration?: Configurat const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -282,8 +277,7 @@ export const InsightsApiAxiosParamCreator = function (configuration?: Configurat const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -326,8 +320,7 @@ export const InsightsApiAxiosParamCreator = function (configuration?: Configurat const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required diff --git a/lib/packages/fabro-api-client/src/api/models-api.ts b/lib/packages/fabro-api-client/src/api/models-api.ts index e53066ecf..9a110e4b9 100644 --- a/lib/packages/fabro-api-client/src/api/models-api.ts +++ b/lib/packages/fabro-api-client/src/api/models-api.ts @@ -57,8 +57,7 @@ export const ModelsApiAxiosParamCreator = function (configuration?: Configuratio const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -115,8 +114,7 @@ export const ModelsApiAxiosParamCreator = function (configuration?: Configuratio const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required diff --git a/lib/packages/fabro-api-client/src/api/repos-api.ts b/lib/packages/fabro-api-client/src/api/repos-api.ts index afa53ea13..fda88abca 100644 --- a/lib/packages/fabro-api-client/src/api/repos-api.ts +++ b/lib/packages/fabro-api-client/src/api/repos-api.ts @@ -55,8 +55,7 @@ export const ReposApiAxiosParamCreator = function (configuration?: Configuration const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required diff --git a/lib/packages/fabro-api-client/src/api/run-internals-api.ts b/lib/packages/fabro-api-client/src/api/run-internals-api.ts index d26751ead..03a7ceb0d 100644 --- a/lib/packages/fabro-api-client/src/api/run-internals-api.ts +++ b/lib/packages/fabro-api-client/src/api/run-internals-api.ts @@ -76,8 +76,7 @@ export const RunInternalsApiAxiosParamCreator = function (configuration?: Config const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -120,8 +119,7 @@ export const RunInternalsApiAxiosParamCreator = function (configuration?: Config const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -165,8 +163,7 @@ export const RunInternalsApiAxiosParamCreator = function (configuration?: Config const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -213,8 +210,7 @@ export const RunInternalsApiAxiosParamCreator = function (configuration?: Config const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -258,8 +254,7 @@ export const RunInternalsApiAxiosParamCreator = function (configuration?: Config const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -301,8 +296,7 @@ export const RunInternalsApiAxiosParamCreator = function (configuration?: Config const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -352,8 +346,7 @@ export const RunInternalsApiAxiosParamCreator = function (configuration?: Config const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -405,8 +398,7 @@ export const RunInternalsApiAxiosParamCreator = function (configuration?: Config const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -452,8 +444,7 @@ export const RunInternalsApiAxiosParamCreator = function (configuration?: Config const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -509,8 +500,7 @@ export const RunInternalsApiAxiosParamCreator = function (configuration?: Config const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -560,8 +550,7 @@ export const RunInternalsApiAxiosParamCreator = function (configuration?: Config const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -601,8 +590,7 @@ export const RunInternalsApiAxiosParamCreator = function (configuration?: Config const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -642,8 +630,7 @@ export const RunInternalsApiAxiosParamCreator = function (configuration?: Config const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -686,8 +673,7 @@ export const RunInternalsApiAxiosParamCreator = function (configuration?: Config const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required diff --git a/lib/packages/fabro-api-client/src/api/run-outputs-api.ts b/lib/packages/fabro-api-client/src/api/run-outputs-api.ts index c46802d85..03e1fa7c0 100644 --- a/lib/packages/fabro-api-client/src/api/run-outputs-api.ts +++ b/lib/packages/fabro-api-client/src/api/run-outputs-api.ts @@ -53,8 +53,7 @@ export const RunOutputsApiAxiosParamCreator = function (configuration?: Configur const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required diff --git a/lib/packages/fabro-api-client/src/api/runs-api.ts b/lib/packages/fabro-api-client/src/api/runs-api.ts index 7aa4f2a50..ceb9421fa 100644 --- a/lib/packages/fabro-api-client/src/api/runs-api.ts +++ b/lib/packages/fabro-api-client/src/api/runs-api.ts @@ -65,8 +65,7 @@ export const RunsApiAxiosParamCreator = function (configuration?: Configuration) const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -105,8 +104,7 @@ export const RunsApiAxiosParamCreator = function (configuration?: Configuration) const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -148,8 +146,7 @@ export const RunsApiAxiosParamCreator = function (configuration?: Configuration) const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -187,8 +184,7 @@ export const RunsApiAxiosParamCreator = function (configuration?: Configuration) const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -232,8 +228,7 @@ export const RunsApiAxiosParamCreator = function (configuration?: Configuration) const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -273,8 +268,7 @@ export const RunsApiAxiosParamCreator = function (configuration?: Configuration) const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -292,7 +286,7 @@ export const RunsApiAxiosParamCreator = function (configuration?: Configuration) }; }, /** - * Validates and renders a workflow manifest as SVG or PNG without creating a run. + * Validates and renders a workflow manifest as SVG without creating a run. * @summary Render Workflow Graph * @param {RenderWorkflowGraphRequest} renderWorkflowGraphRequest * @param {*} [options] Override http request option. @@ -313,15 +307,14 @@ export const RunsApiAxiosParamCreator = function (configuration?: Configuration) const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required await setBearerAuthToObject(localVarHeaderParameter, configuration) localVarHeaderParameter['Content-Type'] = 'application/json'; - localVarHeaderParameter['Accept'] = 'image/svg+xml,image/png,application/json'; + localVarHeaderParameter['Accept'] = 'image/svg+xml,application/json'; setSearchParams(localVarUrlObj, localVarQueryParameter); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; @@ -356,8 +349,7 @@ export const RunsApiAxiosParamCreator = function (configuration?: Configuration) const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -397,8 +389,7 @@ export const RunsApiAxiosParamCreator = function (configuration?: Configuration) const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -437,8 +428,7 @@ export const RunsApiAxiosParamCreator = function (configuration?: Configuration) const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -481,8 +471,7 @@ export const RunsApiAxiosParamCreator = function (configuration?: Configuration) const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -524,8 +513,7 @@ export const RunsApiAxiosParamCreator = function (configuration?: Configuration) const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -630,7 +618,7 @@ export const RunsApiFp = function(configuration?: Configuration) { return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, /** - * Validates and renders a workflow manifest as SVG or PNG without creating a run. + * Validates and renders a workflow manifest as SVG without creating a run. * @summary Render Workflow Graph * @param {RenderWorkflowGraphRequest} renderWorkflowGraphRequest * @param {*} [options] Override http request option. @@ -778,7 +766,7 @@ export const RunsApiFactory = function (configuration?: Configuration, basePath? return localVarFp.pauseRun(id, options).then((request) => request(axios, basePath)); }, /** - * Validates and renders a workflow manifest as SVG or PNG without creating a run. + * Validates and renders a workflow manifest as SVG without creating a run. * @summary Render Workflow Graph * @param {RenderWorkflowGraphRequest} renderWorkflowGraphRequest * @param {*} [options] Override http request option. @@ -912,7 +900,7 @@ export class RunsApi extends BaseAPI { } /** - * Validates and renders a workflow manifest as SVG or PNG without creating a run. + * Validates and renders a workflow manifest as SVG without creating a run. * @summary Render Workflow Graph * @param {RenderWorkflowGraphRequest} renderWorkflowGraphRequest * @param {*} [options] Override http request option. diff --git a/lib/packages/fabro-api-client/src/api/secrets-api.ts b/lib/packages/fabro-api-client/src/api/secrets-api.ts index 50fd78d96..b4d9f5ff1 100644 --- a/lib/packages/fabro-api-client/src/api/secrets-api.ts +++ b/lib/packages/fabro-api-client/src/api/secrets-api.ts @@ -58,8 +58,7 @@ export const SecretsApiAxiosParamCreator = function (configuration?: Configurati const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -100,8 +99,7 @@ export const SecretsApiAxiosParamCreator = function (configuration?: Configurati const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -139,8 +137,7 @@ export const SecretsApiAxiosParamCreator = function (configuration?: Configurati const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required diff --git a/lib/packages/fabro-api-client/src/api/settings-api.ts b/lib/packages/fabro-api-client/src/api/settings-api.ts index f594a2d85..4310d6796 100644 --- a/lib/packages/fabro-api-client/src/api/settings-api.ts +++ b/lib/packages/fabro-api-client/src/api/settings-api.ts @@ -46,8 +46,7 @@ export const SettingsApiAxiosParamCreator = function (configuration?: Configurat const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required diff --git a/lib/packages/fabro-api-client/src/api/system-api.ts b/lib/packages/fabro-api-client/src/api/system-api.ts index f4206c40b..33a69928d 100644 --- a/lib/packages/fabro-api-client/src/api/system-api.ts +++ b/lib/packages/fabro-api-client/src/api/system-api.ts @@ -56,8 +56,7 @@ export const SystemApiAxiosParamCreator = function (configuration?: Configuratio const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -98,8 +97,7 @@ export const SystemApiAxiosParamCreator = function (configuration?: Configuratio const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -139,8 +137,7 @@ export const SystemApiAxiosParamCreator = function (configuration?: Configuratio const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required @@ -179,8 +176,7 @@ export const SystemApiAxiosParamCreator = function (configuration?: Configuratio const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - // authentication mTLS required - await setApiKeyToObject(localVarHeaderParameter, "X-mTLS-Client-CN", configuration) + // authentication SessionCookie required // authentication BearerAuth required // http bearer authentication required diff --git a/lib/packages/fabro-api-client/src/models/render-workflow-graph-format.ts b/lib/packages/fabro-api-client/src/models/render-workflow-graph-format.ts index be948c821..9c8701d88 100644 --- a/lib/packages/fabro-api-client/src/models/render-workflow-graph-format.ts +++ b/lib/packages/fabro-api-client/src/models/render-workflow-graph-format.ts @@ -16,8 +16,7 @@ export const RenderWorkflowGraphFormat = { - SVG: 'svg', - PNG: 'png' + SVG: 'svg' } as const; export type RenderWorkflowGraphFormat = typeof RenderWorkflowGraphFormat[keyof typeof RenderWorkflowGraphFormat];