diff --git a/apps/fabro-web/app/components/event-debug.tsx b/apps/fabro-web/app/components/event-debug.tsx index 28346deb7..67d43eaba 100644 --- a/apps/fabro-web/app/components/event-debug.tsx +++ b/apps/fabro-web/app/components/event-debug.tsx @@ -347,6 +347,27 @@ const BAR_NORMAL_HEIGHT = 22; const BAR_HOVER_HEIGHT = 26; const BAR_SELECTED_HEIGHT = 28; const BAR_WIDTH = 4; +const STRIP_MAX_MARKERS = 600; + +function sampleStripItems( + items: T[], + maxItems: number, + keep: (item: T) => boolean, +): T[] { + if (items.length <= maxItems) return items; + + const indices = new Set(); + for (let i = 0; i < items.length; i += 1) { + if (keep(items[i])) indices.add(i); + } + for (let i = 0; i < maxItems; i += 1) { + indices.add(Math.round((i * (items.length - 1)) / Math.max(1, maxItems - 1))); + } + + return Array.from(indices) + .sort((a, b) => a - b) + .map((index) => items[index]); +} function friendlyEventName(eventName: string): string { const parts = eventName.split("."); @@ -369,6 +390,14 @@ export function DebugDnaStrip({ seq: number; rect: DOMRect; } | null>(null); + const visibleEvents = useMemo( + () => sampleStripItems(events, STRIP_MAX_MARKERS, (event) => event.seq === selectedSeq), + [events, selectedSeq], + ); + const visibleEventBySeq = useMemo( + () => new Map(visibleEvents.map((event) => [event.seq, event])), + [visibleEvents], + ); const range = useMemo(() => { if (events.length === 0) return null; @@ -400,7 +429,7 @@ export function DebugDnaStrip({ } const hoveredEvent = - hover != null ? events.find((e) => e.seq === hover.seq) ?? null : null; + hover != null ? visibleEventBySeq.get(hover.seq) ?? null : null; return (
- {events.map((event) => { + {visibleEvents.map((event) => { const ms = Date.parse(event.ts); if (Number.isNaN(ms)) return null; const pct = ((ms - range.start) / range.duration) * 100; @@ -575,6 +604,19 @@ export function ThreadDnaStrip({ const [hover, setHover] = useState<{ key: string; rect: DOMRect } | null>( null, ); + const visibleItems = useMemo( + () => sampleStripItems(items, STRIP_MAX_MARKERS, (item) => + selectionsEqual(item.selection, selection) + ), + [items, selection], + ); + const visibleItemByKey = useMemo( + () => + new Map( + visibleItems.map((item) => [selectionKey(item.selection), item]), + ), + [visibleItems], + ); const totalMs = useMemo(() => { let max = 0; @@ -597,7 +639,7 @@ export function ThreadDnaStrip({ const hoveredItem = hover != null - ? items.find((it) => selectionKey(it.selection) === hover.key) ?? null + ? visibleItemByKey.get(hover.key) ?? null : null; return ( @@ -606,7 +648,7 @@ export function ThreadDnaStrip({ style={{ height: STRIP_HEIGHT }} >
- {items.map((item) => { + {visibleItems.map((item) => { const key = selectionKey(item.selection); const isInstant = item.durationMs <= 0; const isSelected = selectionsEqual(item.selection, selection); diff --git a/apps/fabro-web/app/components/stage-renderers/fan-in-results.tsx b/apps/fabro-web/app/components/stage-renderers/fan-in-results.tsx index 5ad179b56..ab2c1a79f 100644 --- a/apps/fabro-web/app/components/stage-renderers/fan-in-results.tsx +++ b/apps/fabro-web/app/components/stage-renderers/fan-in-results.tsx @@ -7,6 +7,7 @@ import { import type { EventEnvelope } from "@qltysh/fabro-api-client"; import type { Stage } from "../stage-sidebar"; +import { formatTokenCount } from "../../lib/format"; import { getString } from "../../lib/unknown"; import { Markdown, prettyJson } from "./primitives"; import { StageMetaBar } from "./meta-bar"; @@ -50,12 +51,6 @@ function extractReducerTurn(events: EventEnvelope[]): ReducerTurn | null { return hasReducer ? { prompt, response, model, inputTokens, outputTokens } : null; } -function formatTokens(n: number): string { - if (n < 1000) return `${n}`; - if (n < 1_000_000) return `${Math.round(n / 1000)}k`; - return `${Math.round(n / 1_000_000)}M`; -} - /** * The fan-in `stage.prompt.text` is built by the handler as * "\n\n". Split it for nicer display so the JSON candidate set @@ -178,7 +173,7 @@ export function FanInResults({ {(reducer.inputTokens > 0 || reducer.outputTokens > 0) && ( - {formatTokens(reducer.inputTokens)} / {formatTokens(reducer.outputTokens)} tokens + {formatTokenCount(reducer.inputTokens)} / {formatTokenCount(reducer.outputTokens)} tokens )} diff --git a/apps/fabro-web/app/components/stage-renderers/human-qa.tsx b/apps/fabro-web/app/components/stage-renderers/human-qa.tsx index 44c7c041f..50dc48cdd 100644 --- a/apps/fabro-web/app/components/stage-renderers/human-qa.tsx +++ b/apps/fabro-web/app/components/stage-renderers/human-qa.tsx @@ -11,7 +11,7 @@ import type { EventEnvelope } from "@qltysh/fabro-api-client"; import type { Stage } from "../stage-sidebar"; import { Tooltip } from "../ui"; -import { formatAbsoluteTs } from "../../lib/format"; +import { formatAbsoluteTs, formatDurationMs } from "../../lib/format"; import { ACTIVE_STAGE_STATES } from "../../lib/stage-sidebar"; import { Markdown } from "./primitives"; import { StageMetaBar } from "./meta-bar"; @@ -22,14 +22,6 @@ import { type InterviewOption, } from "./helpers"; -function formatDurationMs(ms: number): string { - if (ms < 1000) return `${Math.round(ms)}ms`; - if (ms < 60_000) return `${(ms / 1000).toFixed(1)}s`; - const mins = Math.floor(ms / 60_000); - const secs = Math.round((ms % 60_000) / 1000); - return secs > 0 ? `${mins}m ${secs}s` : `${mins}m`; -} - function questionTypeLabel(type: string): string { switch (type) { case "multiple_choice": diff --git a/apps/fabro-web/app/components/stage-renderers/manager-loop-summary.tsx b/apps/fabro-web/app/components/stage-renderers/manager-loop-summary.tsx deleted file mode 100644 index 9677dcdd4..000000000 --- a/apps/fabro-web/app/components/stage-renderers/manager-loop-summary.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import { - ArrowPathRoundedSquareIcon, - InformationCircleIcon, -} from "@heroicons/react/20/solid"; - -import type { Stage } from "../stage-sidebar"; -import { StageMetaBar } from "./meta-bar"; - -// TODO: render an iterations list once the manager-loop handler emits cycle -// boundary events (e.g. `manager_loop.cycle.started/completed`). Today the -// child workflow's events flow on the parent run's stream without a marker -// linking them back to this stage. - -export function ManagerLoopSummary({ - stage, - notes, -}: { - stage: Stage; - notes: string | null; -}) { - const cycleHint = notes ?? null; - - return ( -
- - -
-
-
-

- {stage.nodeId} ran a nested - workflow until its stop condition was satisfied. -

- {cycleHint && ( -

- {cycleHint} -

- )} -

-

-
-
- ); -} diff --git a/apps/fabro-web/app/components/stage-renderers/parallel-children.tsx b/apps/fabro-web/app/components/stage-renderers/parallel-children.tsx index 57c6c04a3..864a71e1b 100644 --- a/apps/fabro-web/app/components/stage-renderers/parallel-children.tsx +++ b/apps/fabro-web/app/components/stage-renderers/parallel-children.tsx @@ -5,6 +5,7 @@ import type { EventEnvelope } from "@qltysh/fabro-api-client"; import type { Stage } from "../stage-sidebar"; import { CopyButton } from "../ui"; +import { formatDurationMs } from "../../lib/format"; import { StageMetaBar } from "./meta-bar"; import { parseParallelOverview, type ParallelBranchResult } from "./helpers"; @@ -51,14 +52,6 @@ function StatItem({ ); } -function formatMs(ms: number): string { - if (ms < 1000) return `${Math.round(ms)}ms`; - if (ms < 60_000) return `${(ms / 1000).toFixed(1)}s`; - const mins = Math.floor(ms / 60_000); - const secs = Math.round((ms % 60_000) / 1000); - return secs > 0 ? `${mins}m ${secs}s` : `${mins}m`; -} - function ChildRow({ result, stageHref, @@ -172,7 +165,7 @@ export function ParallelChildren({ /> diff --git a/apps/fabro-web/app/components/terminal-view.test.ts b/apps/fabro-web/app/components/terminal-view.test.ts index 885faf7a7..5ad7fc016 100644 --- a/apps/fabro-web/app/components/terminal-view.test.ts +++ b/apps/fabro-web/app/components/terminal-view.test.ts @@ -47,11 +47,38 @@ describe("terminal view helpers", () => { }); test("uses sandbox id as terminal status detail", () => { - expect(sandboxStatusDetail({ provider: "docker", id: "container-abc123" })) + expect(sandboxStatusDetail({ + provider: "docker", + image: null, + snapshot: null, + runtime: { + id: "container-abc123", + working_directory: "/workspace", + repo_cloned: null, + clone_origin_url: null, + clone_branch: null, + }, + })) .toBe("container-abc123"); - expect(sandboxStatusDetail({ provider: "daytona", id: "sandbox-name" })) + expect(sandboxStatusDetail({ + provider: "daytona", + image: null, + snapshot: null, + runtime: { + id: "sandbox-name", + working_directory: "/workspace", + repo_cloned: null, + clone_origin_url: null, + clone_branch: null, + }, + })) .toBe("sandbox-name"); - expect(sandboxStatusDetail({ provider: "docker" })).toBe("docker"); + expect(sandboxStatusDetail({ + provider: "docker", + image: null, + snapshot: null, + runtime: null, + })).toBe("docker"); expect(sandboxStatusDetail(null)).toBeNull(); }); }); diff --git a/apps/fabro-web/app/components/terminal-view.tsx b/apps/fabro-web/app/components/terminal-view.tsx index 771599c53..ac3110fd1 100644 --- a/apps/fabro-web/app/components/terminal-view.tsx +++ b/apps/fabro-web/app/components/terminal-view.tsx @@ -12,6 +12,7 @@ import { ArrowTopRightOnSquareIcon, ClipboardDocumentIcon, } from "@heroicons/react/20/solid"; +import type { RunSandbox } from "@qltysh/fabro-api-client"; import { SECONDARY_BUTTON_CLASS, Tooltip } from "./ui"; import { ErrorState } from "./state"; @@ -108,20 +109,8 @@ function terminalAccessCommandErrorMessage(provider: string | null): string { : "Could not copy SSH command."; } -function getObject(value: unknown, key: string): Record | null { - if (!value || typeof value !== "object") return null; - const child = (value as Record)[key]; - return child && typeof child === "object" ? child as Record : null; -} - -function getString(value: Record | null, key: string): string | null { - const child = value?.[key]; - return typeof child === "string" ? child : null; -} - -export function sandboxStatusDetail(sandbox: Record | null): string | null { - return getString(sandbox, "id") - ?? getString(sandbox, "provider"); +export function sandboxStatusDetail(sandbox: RunSandbox | null | undefined): string | null { + return sandbox?.runtime?.id ?? sandbox?.provider ?? null; } function sendResize(socket: WebSocket | null, terminal: XtermTerminal | null) { @@ -200,9 +189,8 @@ export default function TerminalView({ }) { const { push } = useToast(); const stateQuery = useRunState(runId); - const sandbox = getObject(getObject(stateQuery.data, "run"), "sandbox") - ?? getObject(stateQuery.data, "sandbox"); - const provider = getString(sandbox, "provider"); + const sandbox = stateQuery.data?.sandbox ?? null; + const provider = sandbox?.provider ?? null; const sandboxDetail = sandboxStatusDetail(sandbox); const accessCommandLabel = terminalAccessCommandLabel(provider); const [connectionKey, setConnectionKey] = useState(0); diff --git a/apps/fabro-web/app/data/runs.ts b/apps/fabro-web/app/data/runs.ts index 8c843de61..df3e2c289 100644 --- a/apps/fabro-web/app/data/runs.ts +++ b/apps/fabro-web/app/data/runs.ts @@ -4,29 +4,8 @@ import { type BoardColumn as ApiBoardColumn, type Run, type RunStatus as ApiRunStatus, - type SandboxResources, } from "@qltysh/fabro-api-client"; -const BYTES_PER_GIB = 1024 * 1024 * 1024; - -function formatBoardResources(resources: SandboxResources | null | undefined): string | undefined { - if (!resources) { - return undefined; - } - const parts: string[] = []; - if (resources.cpu_cores != null) { - parts.push(`${formatCpuCores(resources.cpu_cores)} CPU`); - } - if (resources.memory_bytes != null) { - parts.push(`${Math.round(resources.memory_bytes / BYTES_PER_GIB)} GB`); - } - return parts.length > 0 ? parts.join(" / ") : undefined; -} - -function formatCpuCores(cores: number): string { - return Number.isInteger(cores) ? cores.toString() : cores.toFixed(1); -} - export type CiStatus = "passing" | "failing" | "pending"; export type CheckStatus = "success" | "failure" | "skipped" | "pending" | "queued"; diff --git a/apps/fabro-web/app/lib/cross-tab-sse.ts b/apps/fabro-web/app/lib/cross-tab-sse.ts index 23cf748c8..3b00d3905 100644 --- a/apps/fabro-web/app/lib/cross-tab-sse.ts +++ b/apps/fabro-web/app/lib/cross-tab-sse.ts @@ -1162,7 +1162,7 @@ function candidateKey(candidate: CandidateMessage): string { return `${candidate.candidateGeneration}:${candidate.candidateId}`; } -function eventDedupeKey(payload: EventPayload): string | undefined { +export function eventDedupeKey(payload: EventPayload): string | undefined { if (typeof payload.id === "string" && payload.id.length > 0) { return payload.id; } diff --git a/apps/fabro-web/app/lib/format.ts b/apps/fabro-web/app/lib/format.ts index 27c47e43b..56c765bf0 100644 --- a/apps/fabro-web/app/lib/format.ts +++ b/apps/fabro-web/app/lib/format.ts @@ -79,3 +79,17 @@ export function formatDurationSecs(secs: number): string { const remainMin = minutes % 60; return remainMin > 0 ? `${hours}h ${remainMin}m` : `${hours}h`; } + +export function formatDurationMs(ms: number): string { + if (ms < 1000) return `${Math.round(ms)}ms`; + if (ms < 60_000) return `${(ms / 1000).toFixed(1)}s`; + const minutes = Math.floor(ms / 60_000); + const seconds = Math.round((ms % 60_000) / 1000); + return seconds > 0 ? `${minutes}m ${seconds}s` : `${minutes}m`; +} + +export function formatTokenCount(value: number): string { + if (value < 1000) return `${value}`; + if (value < 1_000_000) return `${Math.round(value / 1000)}k`; + return `${Math.round(value / 1_000_000)}M`; +} diff --git a/apps/fabro-web/app/routes/run-stages.test.ts b/apps/fabro-web/app/routes/run-stages.test.ts index ff3abe939..11e5db24a 100644 --- a/apps/fabro-web/app/routes/run-stages.test.ts +++ b/apps/fabro-web/app/routes/run-stages.test.ts @@ -583,7 +583,7 @@ describe("selectStageRenderer", () => { expect(selectStageRenderer("conditional")).toBe("conditional"); expect(selectStageRenderer("parallel")).toBe("parallel"); expect(selectStageRenderer("parallel.fan_in")).toBe("fan_in"); - expect(selectStageRenderer("stack.manager_loop")).toBe("manager_loop"); + expect(selectStageRenderer("stack.manager_loop")).toBe("summary"); expect(selectStageRenderer("wait")).toBe("wait"); }); @@ -602,7 +602,6 @@ describe("eventsTabLabel", () => { "conditional", "parallel", "fan_in", - "manager_loop", "wait", "summary", ] as const) { @@ -617,7 +616,6 @@ describe("eventsTabLabel", () => { expect(eventsTabLabel("primary", "conditional")).toBe("Decision"); expect(eventsTabLabel("primary", "parallel")).toBe("Children"); expect(eventsTabLabel("primary", "fan_in")).toBe("Results"); - expect(eventsTabLabel("primary", "manager_loop")).toBe("Iterations"); expect(eventsTabLabel("primary", "wait")).toBe("Status"); expect(eventsTabLabel("primary", "summary")).toBe("Summary"); }); diff --git a/apps/fabro-web/app/routes/run-stages.tsx b/apps/fabro-web/app/routes/run-stages.tsx index 91ebc3210..e41fc5b09 100644 --- a/apps/fabro-web/app/routes/run-stages.tsx +++ b/apps/fabro-web/app/routes/run-stages.tsx @@ -32,7 +32,6 @@ import { ConditionalDecision } from "../components/stage-renderers/conditional-d import { FanInResults } from "../components/stage-renderers/fan-in-results"; import { extractStageNotes } from "../components/stage-renderers/helpers"; import { HumanQA } from "../components/stage-renderers/human-qa"; -import { ManagerLoopSummary } from "../components/stage-renderers/manager-loop-summary"; import { ParallelChildren } from "../components/stage-renderers/parallel-children"; import { CodeBlock, @@ -42,7 +41,12 @@ import { } from "../components/stage-renderers/primitives"; import { StageSummary } from "../components/stage-renderers/stage-summary"; import { WaitStatus } from "../components/stage-renderers/wait-status"; -import { formatAbsoluteTs, formatBytes } from "../lib/format"; +import { + formatAbsoluteTs, + formatBytes, + formatDurationMs, + formatTokenCount, +} from "../lib/format"; import { useRun, useRunEventsList, @@ -82,7 +86,6 @@ export type StageRenderer = | "conditional" | "parallel" | "fan_in" - | "manager_loop" | "wait" | "summary"; @@ -112,7 +115,6 @@ const PRIMARY_TAB_LABEL: Record = { conditional: "Decision", parallel: "Children", fan_in: "Results", - manager_loop: "Iterations", wait: "Status", summary: "Summary", }; @@ -141,8 +143,6 @@ export function selectStageRenderer(handler: StageHandler): StageRenderer { return "parallel"; case "parallel.fan_in": return "fan_in"; - case "stack.manager_loop": - return "manager_loop"; case "wait": return "wait"; default: @@ -595,17 +595,6 @@ function durationBetween(startTs: string | undefined, endTs: string): number { return Math.max(0, endMs - startMs); } -function formatDurationMs(ms: number): string { - if (ms < 1000) return `${Math.round(ms)}ms`; - return `${(ms / 1000).toFixed(1)}s`; -} - -function formatTokenCount(n: number): string { - if (n < 1000) return `${n}`; - if (n < 1_000_000) return `${Math.round(n / 1000)}k`; - return `${Math.round(n / 1_000_000)}M`; -} - export function turnMetric(turn: TurnType): string | null { switch (turn.kind) { case "assistant": { @@ -1527,11 +1516,6 @@ export default function RunStages() { events={debugEvents} notes={extractStageNotes(debugEvents)} /> - ) : renderer === "manager_loop" ? ( - ) : renderer === "wait" ? ( ) : ( diff --git a/apps/fabro-web/app/routes/settings-live-events.test.tsx b/apps/fabro-web/app/routes/settings-live-events.test.tsx index f62210192..76cbe894c 100644 --- a/apps/fabro-web/app/routes/settings-live-events.test.tsx +++ b/apps/fabro-web/app/routes/settings-live-events.test.tsx @@ -72,12 +72,18 @@ describe("appendLiveEvent", () => { expect(result).toHaveLength(1); }); - test("dedupes by run_id:seq when id is missing", () => { + test("dedupes by run_id:seq:event when id is missing", () => { const a: LiveEventPayload = { run_id: "run-1", seq: 7, event: "x" }; const result = appendLiveEvent([a], { run_id: "run-1", seq: 7, event: "x" }); expect(result).toHaveLength(1); }); + test("keeps different event names with the same run_id and seq", () => { + const a: LiveEventPayload = { run_id: "run-1", seq: 7, event: "x" }; + const result = appendLiveEvent([a], { run_id: "run-1", seq: 7, event: "y" }); + expect(result).toHaveLength(2); + }); + test("treats events with neither id nor seq as distinct", () => { const a: LiveEventPayload = { event: "x" }; const result = appendLiveEvent([a], { event: "x" }); diff --git a/apps/fabro-web/app/routes/settings-live-events.tsx b/apps/fabro-web/app/routes/settings-live-events.tsx index 38dc4f81f..66844d16f 100644 --- a/apps/fabro-web/app/routes/settings-live-events.tsx +++ b/apps/fabro-web/app/routes/settings-live-events.tsx @@ -13,6 +13,7 @@ import { } from "../components/event-debug"; import { EmptyState } from "../components/state"; import { Tooltip } from "../components/ui"; +import { eventDedupeKey } from "../lib/cross-tab-sse"; import { formatAbsoluteTs } from "../lib/format"; import { subscribeToLiveEvents, @@ -27,20 +28,12 @@ export const handle = { wide: true, fullHeight: true }; export const MAX_EVENTS = 1000; -export function eventDedupeKey(payload: LiveEventPayload): string | null { - if (typeof payload.id === "string") return payload.id; - if (typeof payload.run_id === "string" && typeof payload.seq === "number") { - return `${payload.run_id}:${payload.seq}`; - } - return null; -} - export function appendLiveEvent( buffer: LiveEventPayload[], payload: LiveEventPayload, ): LiveEventPayload[] { const key = eventDedupeKey(payload); - if (key !== null && buffer.some((event) => eventDedupeKey(event) === key)) { + if (key != null && buffer.some((event) => eventDedupeKey(event) === key)) { return buffer; } const next = [payload, ...buffer]; diff --git a/docs/plans/2026-05-10-sandbox-details-tab-plan.md b/docs/plans/2026-05-10-sandbox-details-tab-plan.md index 1bed5fefa..76f9d954c 100644 --- a/docs/plans/2026-05-10-sandbox-details-tab-plan.md +++ b/docs/plans/2026-05-10-sandbox-details-tab-plan.md @@ -158,4 +158,3 @@ Provider behavior: - Docker disk size is nullable until there is a reliable configured/container-specific limit. - `native_state` is for display/debugging only; UI behavior keys off normalized `state`. - Lifecycle settings and actions are intentionally out of scope for this PR. - diff --git a/lib/crates/fabro-api/src/lib.rs b/lib/crates/fabro-api/src/lib.rs index 1be42e068..2af22b8fe 100644 --- a/lib/crates/fabro-api/src/lib.rs +++ b/lib/crates/fabro-api/src/lib.rs @@ -14,8 +14,6 @@ mod generated { include!(concat!(env!("OUT_DIR"), "/codegen.rs")); } pub mod types { - use std::collections::HashMap; - pub use fabro_model::{Model, ModelCosts, ModelFeatures, ModelLimits, ModelTestMode, Provider}; pub use fabro_types::settings::server::{ GithubIntegrationSettings, GithubIntegrationStrategy, IntegrationWebhooksSettings, @@ -34,64 +32,16 @@ pub mod types { AuthMethod, BilledTokenCounts, CommandTermination, DiffStats, DiffSummary, DirtyStatus, EventEnvelope, GitContext, IdpIdentity, InterviewOption, InterviewQuestionRecord, PendingInterviewRecord, PreRunPushOutcome, Principal, PullRequest, PullRequestDetails, - QuestionType, RepositoryRef, Run, RunClientProvenance, RunEvent, RunProjection, + QuestionType, RepositoryRef, Run, RunClientProvenance, RunEvent, RunParts, RunProjection, RunProvenance, RunSandbox, RunSandboxRuntime, RunServerProvenance, SandboxDetails, SandboxProvider, SandboxResources, SandboxService, SandboxServiceListResponse, SandboxState, SandboxTimestamps, SecretMetadata, SecretType, ServerSettings, StageCompletion, StageHandler, StageOutcome, StageProjection, StageState, SystemActorKind, UserPrincipal, WorkflowSettings, }; - use serde::{Deserialize, Serialize}; pub use crate::generated::types::*; pub type RunSummary = fabro_types::Run; - - #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct RunStatusResponse { - pub id: String, - pub title: String, - pub status: fabro_types::RunStatus, - pub error: Option, - pub queue_position: Option, - pub pending_control: Option, - pub created_at: chrono::DateTime, - pub web_url: Option, - } - - #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct RunPullRequest { - pub number: i64, - pub html_url: Option, - pub additions: Option, - pub deletions: Option, - pub comments: Option, - pub checks: Vec, - } - - #[derive(Debug, Clone, Serialize, Deserialize)] - pub struct RunListItem { - pub run_id: String, - pub workflow_name: Option, - pub workflow_slug: Option, - pub goal: String, - pub repository: fabro_types::RepositoryRef, - pub title: String, - pub status: fabro_types::RunStatus, - pub labels: HashMap, - pub source_directory: Option, - pub repo_origin_url: Option, - pub start_time: Option>, - pub pending_control: Option, - pub duration_ms: Option, - pub elapsed_secs: Option, - pub total_usd_micros: Option, - pub column: BoardColumn, - pub pull_request: Option, - pub sandbox: Option, - pub question: Option, - pub created_at: chrono::DateTime, - pub last_event_at: Option>, - } } pub use generated::Client as ApiClient; diff --git a/lib/crates/fabro-api/tests/run_summary_round_trip.rs b/lib/crates/fabro-api/tests/run_summary_round_trip.rs index 9c25b2407..ab27a63a1 100644 --- a/lib/crates/fabro-api/tests/run_summary_round_trip.rs +++ b/lib/crates/fabro-api/tests/run_summary_round_trip.rs @@ -4,7 +4,9 @@ use std::collections::HashMap; use chrono::{TimeZone, Utc}; use fabro_api::types::{RepositoryRef as ApiRepositoryRef, RunSummary as ApiRunSummary}; use fabro_types::status::{RunStatus, SuccessReason}; -use fabro_types::{DiffSummary, PullRequest, RepositoryProvider, RepositoryRef, RunId, RunSummary}; +use fabro_types::{ + DiffSummary, PullRequest, RepositoryProvider, RepositoryRef, RunId, RunParts, RunSummary, +}; use serde_json::json; #[test] @@ -19,32 +21,32 @@ fn run_summary_json_matches_openapi_shape() { let run_id = RunId::with_timestamp(created_at, 7); let last_event_at = Utc.with_ymd_and_hms(2026, 4, 20, 12, 0, 42).unwrap(); let archived_at = Utc.with_ymd_and_hms(2026, 4, 20, 12, 1, 0).unwrap(); - let summary = RunSummary::new( + let summary = RunSummary::from_parts(RunParts { run_id, - Some("workflow".to_string()), - Some("workflow".to_string()), - String::new(), - "API title".to_string(), - HashMap::from([("team".to_string(), "core".to_string())]), - Some("/tmp/fabro".to_string()), - None, - None, - Some(created_at), - Some(last_event_at), - None, - RunStatus::Succeeded { + workflow_name: Some("workflow".to_string()), + workflow_slug: Some("workflow".to_string()), + goal: String::new(), + title: "API title".to_string(), + labels: HashMap::from([("team".to_string(), "core".to_string())]), + source_directory: Some("/tmp/fabro".to_string()), + repo_origin_url: None, + created_by: None, + start_time: Some(created_at), + last_event_at: Some(last_event_at), + completed_at: None, + status: RunStatus::Succeeded { reason: SuccessReason::PartialSuccess, }, - None, - Some(42_000), - Some(123), - None, - Some(DiffSummary { + pending_control: None, + duration_ms: Some(42_000), + total_usd_micros: Some(123), + superseded_by: None, + diff_summary: Some(DiffSummary { files_changed: 3, additions: 12, deletions: 4, }), - Some(PullRequest { + pull_request: Some(PullRequest { provider: "github".to_string(), html_url: "https://github.com/fabro-sh/fabro/pull/123".to_string(), number: 123, @@ -54,12 +56,12 @@ fn run_summary_json_matches_openapi_shape() { head_branch: "fabro/run/demo".to_string(), title: "Add run PR chip".to_string(), }), - Some(archived_at), - None, - vec![], - None, - None, - ); + archived_at: Some(archived_at), + sandbox: None, + models: vec![], + current_question: None, + web_url: None, + }); assert_eq!( serde_json::to_value(&summary).unwrap(), diff --git a/lib/crates/fabro-sandbox/src/details.rs b/lib/crates/fabro-sandbox/src/details.rs index be4d1cb28..2abb93cad 100644 --- a/lib/crates/fabro-sandbox/src/details.rs +++ b/lib/crates/fabro-sandbox/src/details.rs @@ -1,6 +1,7 @@ use std::collections::BTreeMap; use anyhow::Result; +use chrono::{DateTime, Utc}; use fabro_types::{ RunId, RunSandbox, SandboxDetails, SandboxProvider, SandboxResources, SandboxState, SandboxTimestamps, @@ -54,6 +55,12 @@ fn local_details(record: &RunSandbox) -> SandboxDetails { } } +fn parse_rfc3339_utc(value: &str) -> Option> { + DateTime::parse_from_rfc3339(value) + .ok() + .map(|dt| dt.with_timezone(&Utc)) +} + #[cfg(feature = "docker")] mod docker { use std::collections::BTreeMap; @@ -62,11 +69,12 @@ mod docker { use bollard::Docker; use bollard::container::InspectContainerOptions; use bollard::models::{ContainerInspectResponse, ContainerStateStatusEnum, HostConfig}; - use chrono::{DateTime, Utc}; use fabro_types::{ RunId, RunSandbox, SandboxDetails, SandboxResources, SandboxState, SandboxTimestamps, }; + use super::parse_rfc3339_utc; + pub(super) async fn docker_details( record: &RunSandbox, _run_id: Option, @@ -116,7 +124,7 @@ mod docker { let image = inspect.image; - let created_at = inspect.created.as_deref().and_then(parse_docker_timestamp); + let created_at = inspect.created.as_deref().and_then(parse_rfc3339_utc); SandboxDetails { sandbox: RunSandbox { @@ -135,12 +143,6 @@ mod docker { } } - fn parse_docker_timestamp(value: &str) -> Option> { - DateTime::parse_from_rfc3339(value) - .ok() - .map(|dt| dt.with_timezone(&Utc)) - } - pub(super) fn docker_cpu_cores(host_config: &HostConfig) -> Option { let quota = host_config.cpu_quota?; let period = host_config.cpu_period?; @@ -324,13 +326,13 @@ mod docker { #[test] fn parse_timestamp_accepts_rfc3339() { - let parsed = parse_docker_timestamp("2026-05-09T12:00:00Z"); + let parsed = parse_rfc3339_utc("2026-05-09T12:00:00Z"); assert!(parsed.is_some()); } #[test] fn parse_timestamp_rejects_garbage() { - assert!(parse_docker_timestamp("not a date").is_none()); + assert!(parse_rfc3339_utc("not a date").is_none()); } } } @@ -340,12 +342,12 @@ mod daytona { use std::collections::BTreeMap; use anyhow::{Context, Result, anyhow}; - use chrono::{DateTime, Utc}; use daytona_api_client::models::SandboxState as DaytonaState; use fabro_types::{ RunSandbox, SandboxDetails, SandboxResources, SandboxState, SandboxTimestamps, }; + use super::parse_rfc3339_utc; use crate::daytona::DaytonaSandbox; pub(super) async fn daytona_details( @@ -412,18 +414,12 @@ mod daytona { resources, labels, timestamps: SandboxTimestamps { - created_at: sandbox.created_at.as_deref().and_then(parse_iso8601), - last_activity_at: sandbox.updated_at.as_deref().and_then(parse_iso8601), + created_at: sandbox.created_at.as_deref().and_then(parse_rfc3339_utc), + last_activity_at: sandbox.updated_at.as_deref().and_then(parse_rfc3339_utc), }, } } - fn parse_iso8601(value: &str) -> Option> { - DateTime::parse_from_rfc3339(value) - .ok() - .map(|dt| dt.with_timezone(&Utc)) - } - /// The Daytona SDK reports CPU/memory/disk as floats in their respective /// SI units (cores, GiB, GiB). Convert mem/disk into bytes. fn gibibytes_to_bytes(value: f64) -> Option { diff --git a/lib/crates/fabro-server/src/demo/mod.rs b/lib/crates/fabro-server/src/demo/mod.rs index 3b197d14a..94ba6af2a 100644 --- a/lib/crates/fabro-server/src/demo/mod.rs +++ b/lib/crates/fabro-server/src/demo/mod.rs @@ -1036,33 +1036,33 @@ mod runs { ) -> RunSummary { let created_at = ts(created_at); let run_id = RunId::with_timestamp(created_at, sequence); - RunSummary::new( + RunSummary::from_parts(RunParts { run_id, - Some(workflow_name.into()), - Some(workflow_slug.into()), - goal.into(), - fabro_types::infer_run_title(goal), - labels(entries), - Some(format!("/demo/{repo_name}")), - Some(format!("https://github.com/demo/{repo_name}.git")), - None, - Some(created_at), - Some(created_at), - Some(created_at), - parse_run_status(status, status_reason) + workflow_name: Some(workflow_name.into()), + workflow_slug: Some(workflow_slug.into()), + goal: goal.into(), + title: fabro_types::infer_run_title(goal), + labels: labels(entries), + source_directory: Some(format!("/demo/{repo_name}")), + repo_origin_url: Some(format!("https://github.com/demo/{repo_name}.git")), + created_by: None, + start_time: Some(created_at), + last_event_at: Some(created_at), + completed_at: Some(created_at), + status: parse_run_status(status, status_reason) .unwrap_or_else(|| panic!("invalid demo run status: {status}")), pending_control, - elapsed_secs.and_then(duration_ms_from_secs), + duration_ms: elapsed_secs.and_then(duration_ms_from_secs), total_usd_micros, - None, - None, - None, - None, - None, - Vec::new(), - None, - None, - ) + superseded_by: None, + diff_summary: None, + pull_request: None, + archived_at: None, + sandbox: None, + models: Vec::new(), + current_question: None, + web_url: None, + }) } fn parse_run_status(status: &str, status_reason: Option<&str>) -> Option { diff --git a/lib/crates/fabro-server/src/server.rs b/lib/crates/fabro-server/src/server.rs index c9ab3868c..f71878142 100644 --- a/lib/crates/fabro-server/src/server.rs +++ b/lib/crates/fabro-server/src/server.rs @@ -33,11 +33,11 @@ pub use fabro_api::types::{ PreviewUrlResponse, PruneRunEntry, PruneRunsRequest, PruneRunsResponse, RenderWorkflowGraphDirection, RenderWorkflowGraphRequest, RewindRequest, RewindResponse, RunArtifactEntry, RunArtifactListResponse, RunBilling, RunBillingStage, RunBillingTotals, - RunError, RunManifest, RunStage, RunStatusResponse, SandboxDetails, SandboxFileEntry, - SandboxFileListResponse, SandboxService, SandboxServiceListResponse, SshAccessRequest, - SshAccessResponse, StageHandler, StageState, StartRunRequest, SubmitAnswerRequest, - SystemFeatures, SystemInfoResponse, SystemRepairRunIssue, SystemRepairRunsResponse, - SystemRunCounts, TimelineEntryResponse, VncPreviewResponse, WriteBlobResponse, + RunError, RunManifest, RunStage, SandboxDetails, SandboxFileEntry, SandboxFileListResponse, + SandboxService, SandboxServiceListResponse, SshAccessRequest, SshAccessResponse, StageHandler, + StageState, StartRunRequest, SubmitAnswerRequest, SystemFeatures, SystemInfoResponse, + SystemRepairRunIssue, SystemRepairRunsResponse, SystemRunCounts, TimelineEntryResponse, + VncPreviewResponse, WriteBlobResponse, }; use fabro_auth::{ CredentialSource, VaultCredentialSource, auth_issue_message, parse_credential_secret, diff --git a/lib/crates/fabro-server/src/server/handler/sandbox.rs b/lib/crates/fabro-server/src/server/handler/sandbox.rs index 9b9e2f9d2..b252f4bd5 100644 --- a/lib/crates/fabro-server/src/server/handler/sandbox.rs +++ b/lib/crates/fabro-server/src/server/handler/sandbox.rs @@ -558,7 +558,7 @@ async fn list_sandbox_services( Ok(record) => record, Err(response) => return response, }; - let provider = record.provider.to_string(); + let provider = record.provider; let sandbox = match reconnect_run_sandbox(&state, &id).await { Ok(sandbox) => sandbox, Err(response) => return response, @@ -586,7 +586,7 @@ async fn list_sandbox_services( .into_response(); } - let discovery = parse_sandbox_services(&result.stdout, &provider); + let discovery = parse_sandbox_services(&result.stdout, provider); Json(SandboxServiceListResponse { data: discovery.services, meta: SandboxServiceListMeta { @@ -613,7 +613,7 @@ struct SandboxServiceDiscovery { source: SandboxServiceDiscoverySource, } -fn parse_sandbox_services(output: &str, provider: &str) -> SandboxServiceDiscovery { +fn parse_sandbox_services(output: &str, provider: SandboxProvider) -> SandboxServiceDiscovery { if output .lines() .any(|line| line.trim_start().starts_with("FABRO_PROC_NET_TCP ")) @@ -630,7 +630,7 @@ fn parse_sandbox_services(output: &str, provider: &str) -> SandboxServiceDiscove } } -fn parse_ss_listening_services(output: &str, provider: &str) -> Vec { +fn parse_ss_listening_services(output: &str, provider: SandboxProvider) -> Vec { let mut services = BTreeMap::::new(); for line in output .lines() @@ -661,7 +661,10 @@ enum ProcNetFamily { Ipv6, } -fn parse_proc_net_listening_services(output: &str, provider: &str) -> Vec { +fn parse_proc_net_listening_services( + output: &str, + provider: SandboxProvider, +) -> Vec { let mut services = BTreeMap::::new(); let mut family = None; for line in output @@ -740,7 +743,7 @@ fn parse_proc_net_ipv6(value: &str) -> Option { fn push_service( services: &mut BTreeMap, - provider: &str, + provider: SandboxProvider, port: u16, address: String, process: Option, @@ -757,8 +760,8 @@ fn push_service( } } -fn preview_supported(provider: &str, port: u16) -> bool { - provider == SandboxProvider::Daytona.to_string() && (3000..=9999).contains(&port) +fn preview_supported(provider: SandboxProvider, port: u16) -> bool { + provider == SandboxProvider::Daytona && (3000..=9999).contains(&port) } fn push_unique(values: &mut Vec, value: String) { @@ -997,7 +1000,7 @@ LISTEN 0 4096 0.0.0.0:5173 0.0.0.0:* users:(("vite",pid=84,fd=19)) LISTEN 0 4096 [::]:8080 [::]:* users:(("server",pid=126,fd=9)) LISTEN 0 4096 [::1]:2500 [::]:* users:(("debug",pid=168,fd=7)) "#, - "daytona", + SandboxProvider::Daytona, ); assert_eq!(services.len(), 4); @@ -1031,7 +1034,7 @@ not enough fields LISTEN 0 4096 127.0.0.1:0 0.0.0.0:* users:(("zero",pid=1,fd=2)) LISTEN 0 4096 127.0.0.1:65536 0.0.0.0:* users:(("large",pid=1,fd=2)) "#, - "daytona", + SandboxProvider::Daytona, ); assert!(services.is_empty()); @@ -1046,7 +1049,7 @@ LISTEN 0 4096 0.0.0.0:3000 0.0.0.0:* users:(("node",pid=42,fd=23)) LISTEN 0 4096 127.0.0.1:3000 0.0.0.0:* users:(("node",pid=42,fd=23)) LISTEN 0 4096 [::]:3000 [::]:* users:(("vite",pid=84,fd=19)) "#, - "daytona", + SandboxProvider::Daytona, ); assert_eq!(services, vec![SandboxService { @@ -1078,7 +1081,7 @@ FABRO_PROC_NET_TCP /proc/net/tcp6 0: 00000000000000000000000000000000:1F90 00000000000000000000000000000000:0000 0A 00000000:00000000 00:00000000 00000000 501 0 44444 1: 00000000000000000000000001000000:09C4 00000000000000000000000000000000:0000 0A 00000000:00000000 00:00000000 00000000 501 0 55555 ", - "daytona", + SandboxProvider::Daytona, ); assert_eq!(discovery.source, SandboxServiceDiscoverySource::Procfs); @@ -1112,11 +1115,11 @@ FABRO_PROC_NET_TCP /proc/net/tcp6 #[test] fn preview_support_is_daytona_only_for_documented_range() { - assert!(!preview_supported("daytona", 2500)); - assert!(preview_supported("daytona", 3000)); - assert!(preview_supported("daytona", 9999)); - assert!(!preview_supported("daytona", 10000)); - assert!(!preview_supported("docker", 3000)); + assert!(!preview_supported(SandboxProvider::Daytona, 2500)); + assert!(preview_supported(SandboxProvider::Daytona, 3000)); + assert!(preview_supported(SandboxProvider::Daytona, 9999)); + assert!(!preview_supported(SandboxProvider::Daytona, 10000)); + assert!(!preview_supported(SandboxProvider::Docker, 3000)); } #[test] diff --git a/lib/crates/fabro-server/src/web_auth.rs b/lib/crates/fabro-server/src/web_auth.rs index bfbebc067..3f6fbae2a 100644 --- a/lib/crates/fabro-server/src/web_auth.rs +++ b/lib/crates/fabro-server/src/web_auth.rs @@ -1005,11 +1005,11 @@ async fn delete_auth_session( .into_response(); } }; - let active_sessions = match auth_tokens - .active_cli_sessions(&authenticated.principal.identity, Utc::now()) + let deleted = match auth_tokens + .delete_active_chain_for_identity(&authenticated.principal.identity, chain_id, Utc::now()) .await { - Ok(tokens) => tokens, + Ok(deleted) => deleted, Err(err) => { error!(error = %err, "Failed to scan refresh tokens while deleting auth session"); return ApiError::new( @@ -1019,23 +1019,10 @@ async fn delete_auth_session( .into_response(); } }; - - if !active_sessions - .iter() - .any(|token| token.chain_id == chain_id) - { + if deleted == 0 { return ApiError::not_found("Auth session not found.").into_response(); } - if let Err(err) = auth_tokens.delete_chain(chain_id).await { - error!(error = %err, %chain_id, "Failed to delete refresh token chain"); - return ApiError::new( - StatusCode::INTERNAL_SERVER_ERROR, - "Failed to revoke auth session.", - ) - .into_response(); - } - StatusCode::NO_CONTENT.into_response() } diff --git a/lib/crates/fabro-store/src/run_state.rs b/lib/crates/fabro-store/src/run_state.rs index ba03d8ee5..6993bd86f 100644 --- a/lib/crates/fabro-store/src/run_state.rs +++ b/lib/crates/fabro-store/src/run_state.rs @@ -10,7 +10,7 @@ use fabro_types::settings::run::RunSandboxSettings; use fabro_types::{ BilledModelUsage, Checkpoint, CheckpointRecord, CommandTermination, Conclusion, EventBody, FailureSignature, InterviewQuestionRecord, Outcome, PendingInterviewRecord, PullRequestRecord, - RunControlAction, RunDiff, RunEvent, RunId, RunModel, RunProjection, RunSandbox, + RunControlAction, RunDiff, RunEvent, RunId, RunModel, RunParts, RunProjection, RunSandbox, RunSandboxRuntime, RunSpec, RunStatus, RunSummary, SandboxProvider, StageCompletion, StageHandler, StageId, StageOutcome, StageProjection, StageState, StartRecord, first_event_seq, }; @@ -600,42 +600,42 @@ pub(crate) fn build_summary(state: &RunProjection, run_id: &RunId) -> RunSummary .as_ref() .and_then(|provenance| provenance.subject.clone()); - RunSummary::new( - *run_id, + RunSummary::from_parts(RunParts { + run_id: *run_id, workflow_name, - state.spec.workflow_slug.clone(), + workflow_slug: state.spec.workflow_slug.clone(), goal, - state.title().into_owned(), - state.spec.labels.clone(), - state.spec.source_directory.clone(), - state.spec.git.as_ref().map(|git| git.origin_url.clone()), + title: state.title().into_owned(), + labels: state.spec.labels.clone(), + source_directory: state.spec.source_directory.clone(), + repo_origin_url: state.spec.git.as_ref().map(|git| git.origin_url.clone()), created_by, - state.start.as_ref().map(|start| start.start_time), - Some(state.last_event_at), - state + start_time: state.start.as_ref().map(|start| start.start_time), + last_event_at: Some(state.last_event_at), + completed_at: state .conclusion .as_ref() .map(|conclusion| conclusion.timestamp), - state.status, - state.pending_control, - state + status: state.status, + pending_control: state.pending_control, + duration_ms: state .conclusion .as_ref() .map(|conclusion| conclusion.duration_ms), - state + total_usd_micros: state .conclusion .as_ref() .and_then(|conclusion| conclusion.billing.as_ref()) .and_then(|billing| billing.total_usd_micros), - state.superseded_by, + superseded_by: state.superseded_by, diff_summary, - state.pull_request.clone(), - state.archived_at, - state.sandbox.clone(), + pull_request: state.pull_request.clone(), + archived_at: state.archived_at, + sandbox: state.sandbox.clone(), models, current_question, - state.web_url.clone(), - ) + web_url: state.web_url.clone(), + }) } fn run_models(state: &RunProjection) -> Vec { diff --git a/lib/crates/fabro-store/src/slate/auth_tokens.rs b/lib/crates/fabro-store/src/slate/auth_tokens.rs index 8ed2d79b8..17ba39e9b 100644 --- a/lib/crates/fabro-store/src/slate/auth_tokens.rs +++ b/lib/crates/fabro-store/src/slate/auth_tokens.rs @@ -141,6 +141,42 @@ impl RefreshTokenStore { self.repo.gc(|token| token.chain_id == chain_id).await } + pub async fn delete_active_chain_for_identity( + &self, + identity: &IdpIdentity, + chain_id: Uuid, + now: DateTime, + ) -> Result { + let mut token_hashes = Vec::new(); + let mut has_active_token = false; + let mut tokens = self.repo.scan_stream(); + + while let Some(result) = tokens.next().await { + let (_, token) = result?; + if token.identity != *identity || token.chain_id != chain_id { + continue; + } + if !token.used && token.expires_at > now { + has_active_token = true; + } + token_hashes.push(token.token_hash); + } + + if !has_active_token { + return Ok(0); + } + + let deleted = u64::try_from(token_hashes.len()).unwrap_or(u64::MAX); + transaction(&self.db, |tx| { + for token_hash in &token_hashes { + tx.delete::(token_hash)?; + } + Ok(()) + }) + .await?; + Ok(deleted) + } + pub async fn gc_expired(&self, cutoff: DateTime) -> Result { self.repo.gc(|token| token.expires_at <= cutoff).await } @@ -365,6 +401,85 @@ mod tests { ); } + #[tokio::test] + async fn delete_active_chain_for_identity_requires_active_owned_token() { + let store = store().await; + let identity = fabro_types::IdpIdentity::new("https://github.com", "12345").unwrap(); + let chain_id = Uuid::new_v4(); + let other_chain_id = Uuid::new_v4(); + let active = refresh_token([1_u8; 32], chain_id, false); + let used = refresh_token([2_u8; 32], chain_id, true); + let mut other_identity = refresh_token([3_u8; 32], chain_id, false); + other_identity.identity = alternate_identity(); + let other_chain = refresh_token([4_u8; 32], other_chain_id, false); + + for token in [ + active.clone(), + used.clone(), + other_identity.clone(), + other_chain.clone(), + ] { + store.insert_refresh_token(token).await.unwrap(); + } + + assert_eq!( + store + .delete_active_chain_for_identity(&identity, chain_id, chrono::Utc::now()) + .await + .unwrap(), + 2 + ); + assert!( + store + .find_refresh_token(&active.token_hash) + .await + .unwrap() + .is_none() + ); + assert!( + store + .find_refresh_token(&used.token_hash) + .await + .unwrap() + .is_none() + ); + assert_eq!( + store + .find_refresh_token(&other_identity.token_hash) + .await + .unwrap(), + Some(other_identity) + ); + assert_eq!( + store + .find_refresh_token(&other_chain.token_hash) + .await + .unwrap(), + Some(other_chain) + ); + } + + #[tokio::test] + async fn delete_active_chain_for_identity_returns_zero_without_active_token() { + let store = store().await; + let identity = fabro_types::IdpIdentity::new("https://github.com", "12345").unwrap(); + let chain_id = Uuid::new_v4(); + let used = refresh_token([1_u8; 32], chain_id, true); + store.insert_refresh_token(used.clone()).await.unwrap(); + + assert_eq!( + store + .delete_active_chain_for_identity(&identity, chain_id, chrono::Utc::now()) + .await + .unwrap(), + 0 + ); + assert_eq!( + store.find_refresh_token(&used.token_hash).await.unwrap(), + Some(used) + ); + } + #[tokio::test] async fn active_cli_sessions_return_newest_active_token_per_chain_for_identity() { let store = store().await; diff --git a/lib/crates/fabro-types/src/lib.rs b/lib/crates/fabro-types/src/lib.rs index dcac895f2..86f623dfa 100644 --- a/lib/crates/fabro-types/src/lib.rs +++ b/lib/crates/fabro-types/src/lib.rs @@ -83,7 +83,7 @@ pub use run_projection::{ pub use run_sandbox::{RunSandbox, RunSandboxRuntime}; pub use run_summary::{ AutomationRef, Run, RunBillingSummary, RunError, RunLifecycle, RunLinks, RunModel, RunOrigin, - RunOriginKind, RunTimestamps, WorkflowRef, + RunOriginKind, RunParts, RunTimestamps, WorkflowRef, }; pub type RunSummary = Run; pub type PullRequestRecord = PullRequest; diff --git a/lib/crates/fabro-types/src/run_summary.rs b/lib/crates/fabro-types/src/run_summary.rs index 15b037eba..e3f9f7a5f 100644 --- a/lib/crates/fabro-types/src/run_summary.rs +++ b/lib/crates/fabro-types/src/run_summary.rs @@ -69,6 +69,34 @@ pub struct Run { pub diff_summary: Option, } +#[derive(Debug, Clone, PartialEq)] +pub struct RunParts { + pub run_id: RunId, + pub workflow_name: Option, + pub workflow_slug: Option, + pub goal: String, + pub title: String, + pub labels: HashMap, + pub source_directory: Option, + pub repo_origin_url: Option, + pub created_by: Option, + pub start_time: Option>, + pub last_event_at: Option>, + pub completed_at: Option>, + pub status: RunStatus, + pub pending_control: Option, + pub duration_ms: Option, + pub total_usd_micros: Option, + pub superseded_by: Option, + pub diff_summary: Option, + pub pull_request: Option, + pub archived_at: Option>, + pub sandbox: Option, + pub models: Vec, + pub current_question: Option, + pub web_url: Option, +} + #[derive(Debug, Deserialize)] struct RunWire { #[serde(default)] @@ -369,36 +397,33 @@ pub struct RunLinks { } impl Run { - #[allow( - clippy::too_many_arguments, - reason = "Run is a public wire DTO; the constructor centralizes derived fields." - )] - pub fn new( - run_id: RunId, - workflow_name: Option, - workflow_slug: Option, - goal: String, - title: String, - labels: HashMap, - source_directory: Option, - repo_origin_url: Option, - created_by: Option, - start_time: Option>, - last_event_at: Option>, - completed_at: Option>, - status: RunStatus, - pending_control: Option, - duration_ms: Option, - total_usd_micros: Option, - superseded_by: Option, - diff_summary: Option, - pull_request: Option, - archived_at: Option>, - sandbox: Option, - models: Vec, - current_question: Option, - web_url: Option, - ) -> Self { + pub fn from_parts(parts: RunParts) -> Self { + let RunParts { + run_id, + workflow_name, + workflow_slug, + goal, + title, + labels, + source_directory, + repo_origin_url, + created_by, + start_time, + last_event_at, + completed_at, + status, + pending_control, + duration_ms, + total_usd_micros, + superseded_by, + diff_summary, + pull_request, + archived_at, + sandbox, + models, + current_question, + web_url, + } = parts; let created_at = run_id.created_at(); let repository = Some(repository_ref( repo_origin_url.as_deref(), diff --git a/lib/packages/fabro-api-client/src/api/auth-api.ts b/lib/packages/fabro-api-client/src/api/auth-api.ts index afc5bd1e0..20a55a4fa 100644 --- a/lib/packages/fabro-api-client/src/api/auth-api.ts +++ b/lib/packages/fabro-api-client/src/api/auth-api.ts @@ -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 @@ -45,7 +45,7 @@ export const AuthApiAxiosParamCreator = function (configuration?: Configuration) /** * Revokes an active CLI session chain. Browser sessions are not revocable in this API version. * @summary Revoke an authenticated session - * @param {string} id + * @param {string} id * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -187,7 +187,7 @@ export const AuthApiAxiosParamCreator = function (configuration?: Configuration) /** * Creates a browser session from an enabled development token. * @summary Login with development token - * @param {DevTokenLoginRequest} devTokenLoginRequest + * @param {DevTokenLoginRequest} devTokenLoginRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -222,7 +222,7 @@ export const AuthApiAxiosParamCreator = function (configuration?: Configuration) /** * Enables or disables demo-mode routing for the current browser session. * @summary Toggle browser demo mode - * @param {DemoToggleRequest} demoToggleRequest + * @param {DemoToggleRequest} demoToggleRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -272,7 +272,7 @@ export const AuthApiFp = function(configuration?: Configuration) { /** * Revokes an active CLI session chain. Browser sessions are not revocable in this API version. * @summary Revoke an authenticated session - * @param {string} id + * @param {string} id * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -321,7 +321,7 @@ export const AuthApiFp = function(configuration?: Configuration) { /** * Creates a browser session from an enabled development token. * @summary Login with development token - * @param {DevTokenLoginRequest} devTokenLoginRequest + * @param {DevTokenLoginRequest} devTokenLoginRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -334,7 +334,7 @@ export const AuthApiFp = function(configuration?: Configuration) { /** * Enables or disables demo-mode routing for the current browser session. * @summary Toggle browser demo mode - * @param {DemoToggleRequest} demoToggleRequest + * @param {DemoToggleRequest} demoToggleRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -356,7 +356,7 @@ export const AuthApiFactory = function (configuration?: Configuration, basePath? /** * Revokes an active CLI session chain. Browser sessions are not revocable in this API version. * @summary Revoke an authenticated session - * @param {string} id + * @param {string} id * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -393,7 +393,7 @@ export const AuthApiFactory = function (configuration?: Configuration, basePath? /** * Creates a browser session from an enabled development token. * @summary Login with development token - * @param {DevTokenLoginRequest} devTokenLoginRequest + * @param {DevTokenLoginRequest} devTokenLoginRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -403,7 +403,7 @@ export const AuthApiFactory = function (configuration?: Configuration, basePath? /** * Enables or disables demo-mode routing for the current browser session. * @summary Toggle browser demo mode - * @param {DemoToggleRequest} demoToggleRequest + * @param {DemoToggleRequest} demoToggleRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -420,7 +420,7 @@ export class AuthApi extends BaseAPI { /** * Revokes an active CLI session chain. Browser sessions are not revocable in this API version. * @summary Revoke an authenticated session - * @param {string} id + * @param {string} id * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -461,7 +461,7 @@ export class AuthApi extends BaseAPI { /** * Creates a browser session from an enabled development token. * @summary Login with development token - * @param {DevTokenLoginRequest} devTokenLoginRequest + * @param {DevTokenLoginRequest} devTokenLoginRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -472,7 +472,7 @@ export class AuthApi extends BaseAPI { /** * Enables or disables demo-mode routing for the current browser session. * @summary Toggle browser demo mode - * @param {DemoToggleRequest} demoToggleRequest + * @param {DemoToggleRequest} demoToggleRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -480,4 +480,3 @@ export class AuthApi extends BaseAPI { return AuthApiFp(this.configuration).toggleDemo(demoToggleRequest, options).then((request) => request(this.axios, this.basePath)); } } - 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 1b299db54..f3977a508 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 @@ -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 @@ -54,7 +54,7 @@ export const HumanInTheLoopApiAxiosParamCreator = function (configuration?: Conf * Creates a command for connecting to the run\'s sandbox environment. Daytona runs return a time-limited SSH command; Docker runs return a local docker exec command. * @summary Sandbox Access Command * @param {string} id Unique run identifier (ULID). - * @param {SshAccessRequest} sshAccessRequest + * @param {SshAccessRequest} sshAccessRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -139,7 +139,7 @@ export const HumanInTheLoopApiAxiosParamCreator = function (configuration?: Conf * Generates a preview URL for a port exposed by the run\'s sandbox environment. * @summary Preview URL * @param {string} id Unique run identifier (ULID). - * @param {PreviewUrlRequest} previewUrlRequest + * @param {PreviewUrlRequest} previewUrlRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -184,7 +184,7 @@ export const HumanInTheLoopApiAxiosParamCreator = function (configuration?: Conf * Downloads a file from the run\'s sandbox environment. * @summary Download Sandbox File * @param {string} id Unique run identifier (ULID). - * @param {string} path + * @param {string} path * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -228,7 +228,7 @@ export const HumanInTheLoopApiAxiosParamCreator = function (configuration?: Conf }; }, /** - * Interrupt the active API-mode agent round without sending steering text. The agent keeps its steering lease and waits for a later steer message before starting another LLM round. + * Interrupt the active API-mode agent round without sending steering text. The agent keeps its steering lease and waits for a later steer message before starting another LLM round. * @summary Interrupt Run * @param {string} id Unique run identifier (ULID). * @param {*} [options] Override http request option. @@ -321,8 +321,8 @@ export const HumanInTheLoopApiAxiosParamCreator = function (configuration?: Conf * Lists directory entries from the run\'s sandbox environment. * @summary List Sandbox Files * @param {string} id Unique run identifier (ULID). - * @param {string} path - * @param {number} [depth] + * @param {string} path + * @param {number} [depth] * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -413,8 +413,8 @@ export const HumanInTheLoopApiAxiosParamCreator = function (configuration?: Conf * Uploads a file into the run\'s sandbox environment. * @summary Upload Sandbox File * @param {string} id Unique run identifier (ULID). - * @param {string} path - * @param {File} body + * @param {string} path + * @param {File} body * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -502,10 +502,10 @@ export const HumanInTheLoopApiAxiosParamCreator = function (configuration?: Conf }; }, /** - * Send a mid-run steering message to the live agent session(s) of a running run. Set `interrupt=true` to atomically interrupt the active API-mode agent round first, then deliver this message as the next user turn. Without `interrupt=true`, the message is appended to the steering queue and may buffer until the next API-mode agent session. + * Send a mid-run steering message to the live agent session(s) of a running run. Set `interrupt=true` to atomically interrupt the active API-mode agent round first, then deliver this message as the next user turn. Without `interrupt=true`, the message is appended to the steering queue and may buffer until the next API-mode agent session. * @summary Steer Run * @param {string} id Unique run identifier (ULID). - * @param {SteerRunRequest} steerRunRequest + * @param {SteerRunRequest} steerRunRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -551,7 +551,7 @@ export const HumanInTheLoopApiAxiosParamCreator = function (configuration?: Conf * @summary Submit Run Answer * @param {string} id Unique run identifier (ULID). * @param {string} qid Unique identifier of a pending question. - * @param {SubmitAnswerRequest} submitAnswerRequest + * @param {SubmitAnswerRequest} submitAnswerRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -608,7 +608,7 @@ export const HumanInTheLoopApiFp = function(configuration?: Configuration) { * Creates a command for connecting to the run\'s sandbox environment. Daytona runs return a time-limited SSH command; Docker runs return a local docker exec command. * @summary Sandbox Access Command * @param {string} id Unique run identifier (ULID). - * @param {SshAccessRequest} sshAccessRequest + * @param {SshAccessRequest} sshAccessRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -635,7 +635,7 @@ export const HumanInTheLoopApiFp = function(configuration?: Configuration) { * Generates a preview URL for a port exposed by the run\'s sandbox environment. * @summary Preview URL * @param {string} id Unique run identifier (ULID). - * @param {PreviewUrlRequest} previewUrlRequest + * @param {PreviewUrlRequest} previewUrlRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -649,7 +649,7 @@ export const HumanInTheLoopApiFp = function(configuration?: Configuration) { * Downloads a file from the run\'s sandbox environment. * @summary Download Sandbox File * @param {string} id Unique run identifier (ULID). - * @param {string} path + * @param {string} path * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -660,7 +660,7 @@ export const HumanInTheLoopApiFp = function(configuration?: Configuration) { return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, /** - * Interrupt the active API-mode agent round without sending steering text. The agent keeps its steering lease and waits for a later steer message before starting another LLM round. + * Interrupt the active API-mode agent round without sending steering text. The agent keeps its steering lease and waits for a later steer message before starting another LLM round. * @summary Interrupt Run * @param {string} id Unique run identifier (ULID). * @param {*} [options] Override http request option. @@ -691,8 +691,8 @@ export const HumanInTheLoopApiFp = function(configuration?: Configuration) { * Lists directory entries from the run\'s sandbox environment. * @summary List Sandbox Files * @param {string} id Unique run identifier (ULID). - * @param {string} path - * @param {number} [depth] + * @param {string} path + * @param {number} [depth] * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -719,8 +719,8 @@ export const HumanInTheLoopApiFp = function(configuration?: Configuration) { * Uploads a file into the run\'s sandbox environment. * @summary Upload Sandbox File * @param {string} id Unique run identifier (ULID). - * @param {string} path - * @param {File} body + * @param {string} path + * @param {File} body * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -744,10 +744,10 @@ export const HumanInTheLoopApiFp = function(configuration?: Configuration) { return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, /** - * Send a mid-run steering message to the live agent session(s) of a running run. Set `interrupt=true` to atomically interrupt the active API-mode agent round first, then deliver this message as the next user turn. Without `interrupt=true`, the message is appended to the steering queue and may buffer until the next API-mode agent session. + * Send a mid-run steering message to the live agent session(s) of a running run. Set `interrupt=true` to atomically interrupt the active API-mode agent round first, then deliver this message as the next user turn. Without `interrupt=true`, the message is appended to the steering queue and may buffer until the next API-mode agent session. * @summary Steer Run * @param {string} id Unique run identifier (ULID). - * @param {SteerRunRequest} steerRunRequest + * @param {SteerRunRequest} steerRunRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -762,7 +762,7 @@ export const HumanInTheLoopApiFp = function(configuration?: Configuration) { * @summary Submit Run Answer * @param {string} id Unique run identifier (ULID). * @param {string} qid Unique identifier of a pending question. - * @param {SubmitAnswerRequest} submitAnswerRequest + * @param {SubmitAnswerRequest} submitAnswerRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -785,7 +785,7 @@ export const HumanInTheLoopApiFactory = function (configuration?: Configuration, * Creates a command for connecting to the run\'s sandbox environment. Daytona runs return a time-limited SSH command; Docker runs return a local docker exec command. * @summary Sandbox Access Command * @param {string} id Unique run identifier (ULID). - * @param {SshAccessRequest} sshAccessRequest + * @param {SshAccessRequest} sshAccessRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -806,7 +806,7 @@ export const HumanInTheLoopApiFactory = function (configuration?: Configuration, * Generates a preview URL for a port exposed by the run\'s sandbox environment. * @summary Preview URL * @param {string} id Unique run identifier (ULID). - * @param {PreviewUrlRequest} previewUrlRequest + * @param {PreviewUrlRequest} previewUrlRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -817,7 +817,7 @@ export const HumanInTheLoopApiFactory = function (configuration?: Configuration, * Downloads a file from the run\'s sandbox environment. * @summary Download Sandbox File * @param {string} id Unique run identifier (ULID). - * @param {string} path + * @param {string} path * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -825,7 +825,7 @@ export const HumanInTheLoopApiFactory = function (configuration?: Configuration, return localVarFp.getSandboxFile(id, path, options).then((request) => request(axios, basePath)); }, /** - * Interrupt the active API-mode agent round without sending steering text. The agent keeps its steering lease and waits for a later steer message before starting another LLM round. + * Interrupt the active API-mode agent round without sending steering text. The agent keeps its steering lease and waits for a later steer message before starting another LLM round. * @summary Interrupt Run * @param {string} id Unique run identifier (ULID). * @param {*} [options] Override http request option. @@ -850,8 +850,8 @@ export const HumanInTheLoopApiFactory = function (configuration?: Configuration, * Lists directory entries from the run\'s sandbox environment. * @summary List Sandbox Files * @param {string} id Unique run identifier (ULID). - * @param {string} path - * @param {number} [depth] + * @param {string} path + * @param {number} [depth] * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -872,8 +872,8 @@ export const HumanInTheLoopApiFactory = function (configuration?: Configuration, * Uploads a file into the run\'s sandbox environment. * @summary Upload Sandbox File * @param {string} id Unique run identifier (ULID). - * @param {string} path - * @param {File} body + * @param {string} path + * @param {File} body * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -891,10 +891,10 @@ export const HumanInTheLoopApiFactory = function (configuration?: Configuration, return localVarFp.retrieveRunSandbox(id, options).then((request) => request(axios, basePath)); }, /** - * Send a mid-run steering message to the live agent session(s) of a running run. Set `interrupt=true` to atomically interrupt the active API-mode agent round first, then deliver this message as the next user turn. Without `interrupt=true`, the message is appended to the steering queue and may buffer until the next API-mode agent session. + * Send a mid-run steering message to the live agent session(s) of a running run. Set `interrupt=true` to atomically interrupt the active API-mode agent round first, then deliver this message as the next user turn. Without `interrupt=true`, the message is appended to the steering queue and may buffer until the next API-mode agent session. * @summary Steer Run * @param {string} id Unique run identifier (ULID). - * @param {SteerRunRequest} steerRunRequest + * @param {SteerRunRequest} steerRunRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -906,7 +906,7 @@ export const HumanInTheLoopApiFactory = function (configuration?: Configuration, * @summary Submit Run Answer * @param {string} id Unique run identifier (ULID). * @param {string} qid Unique identifier of a pending question. - * @param {SubmitAnswerRequest} submitAnswerRequest + * @param {SubmitAnswerRequest} submitAnswerRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -924,7 +924,7 @@ export class HumanInTheLoopApi extends BaseAPI { * Creates a command for connecting to the run\'s sandbox environment. Daytona runs return a time-limited SSH command; Docker runs return a local docker exec command. * @summary Sandbox Access Command * @param {string} id Unique run identifier (ULID). - * @param {SshAccessRequest} sshAccessRequest + * @param {SshAccessRequest} sshAccessRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -947,7 +947,7 @@ export class HumanInTheLoopApi extends BaseAPI { * Generates a preview URL for a port exposed by the run\'s sandbox environment. * @summary Preview URL * @param {string} id Unique run identifier (ULID). - * @param {PreviewUrlRequest} previewUrlRequest + * @param {PreviewUrlRequest} previewUrlRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -959,7 +959,7 @@ export class HumanInTheLoopApi extends BaseAPI { * Downloads a file from the run\'s sandbox environment. * @summary Download Sandbox File * @param {string} id Unique run identifier (ULID). - * @param {string} path + * @param {string} path * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -968,7 +968,7 @@ export class HumanInTheLoopApi extends BaseAPI { } /** - * Interrupt the active API-mode agent round without sending steering text. The agent keeps its steering lease and waits for a later steer message before starting another LLM round. + * Interrupt the active API-mode agent round without sending steering text. The agent keeps its steering lease and waits for a later steer message before starting another LLM round. * @summary Interrupt Run * @param {string} id Unique run identifier (ULID). * @param {*} [options] Override http request option. @@ -995,8 +995,8 @@ export class HumanInTheLoopApi extends BaseAPI { * Lists directory entries from the run\'s sandbox environment. * @summary List Sandbox Files * @param {string} id Unique run identifier (ULID). - * @param {string} path - * @param {number} [depth] + * @param {string} path + * @param {number} [depth] * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -1019,8 +1019,8 @@ export class HumanInTheLoopApi extends BaseAPI { * Uploads a file into the run\'s sandbox environment. * @summary Upload Sandbox File * @param {string} id Unique run identifier (ULID). - * @param {string} path - * @param {File} body + * @param {string} path + * @param {File} body * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -1040,10 +1040,10 @@ export class HumanInTheLoopApi extends BaseAPI { } /** - * Send a mid-run steering message to the live agent session(s) of a running run. Set `interrupt=true` to atomically interrupt the active API-mode agent round first, then deliver this message as the next user turn. Without `interrupt=true`, the message is appended to the steering queue and may buffer until the next API-mode agent session. + * Send a mid-run steering message to the live agent session(s) of a running run. Set `interrupt=true` to atomically interrupt the active API-mode agent round first, then deliver this message as the next user turn. Without `interrupt=true`, the message is appended to the steering queue and may buffer until the next API-mode agent session. * @summary Steer Run * @param {string} id Unique run identifier (ULID). - * @param {SteerRunRequest} steerRunRequest + * @param {SteerRunRequest} steerRunRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -1056,7 +1056,7 @@ export class HumanInTheLoopApi extends BaseAPI { * @summary Submit Run Answer * @param {string} id Unique run identifier (ULID). * @param {string} qid Unique identifier of a pending question. - * @param {SubmitAnswerRequest} submitAnswerRequest + * @param {SubmitAnswerRequest} submitAnswerRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -1064,4 +1064,3 @@ export class HumanInTheLoopApi extends BaseAPI { return HumanInTheLoopApiFp(this.configuration).submitRunAnswer(id, qid, submitAnswerRequest, options).then((request) => request(this.axios, this.basePath)); } } - 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 35c2e283e..ca9c328db 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 @@ -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 @@ -35,7 +35,7 @@ import type { RunBilling } from '../models'; export const RunOutputsApiAxiosParamCreator = function (configuration?: Configuration) { return { /** - * Returns commits on the run branch since the run\'s base SHA, sourced directly from sandbox Git. The list uses first-parent chronological history and is capped by `limit` (default and maximum: 100). Commit data is Git-authoritative; Fabro-generated commit messages are not required for correctness. + * Returns commits on the run branch since the run\'s base SHA, sourced directly from sandbox Git. The list uses first-parent chronological history and is capped by `limit` (default and maximum: 100). Commit data is Git-authoritative; Fabro-generated commit messages are not required for correctness. * @summary List Run Commits * @param {string} id Unique run identifier (ULID). * @param {number} [limit] Maximum number of commits to return. Defaults to 100 and is capped at 100. @@ -80,7 +80,7 @@ export const RunOutputsApiAxiosParamCreator = function (configuration?: Configur }; }, /** - * Returns the set of file changes produced by a run as a list of before/after diffs. While the run\'s sandbox is reachable, diffs are resolved live against the sandbox working tree at the current HEAD. Degraded responses keep the same `data: FileDiff[]` shape. File contents are null on every entry; non-sensitive non-flagged entries include `unified_patch`, while sensitive / binary / symlink / submodule / truncated entries render through the same placeholder flags used by the live path. Responses are bounded by per-file (256 KiB / 20k lines), per-run aggregate (5 MiB), and per-request (200 files) caps. Files exceeding a cap are returned with `truncated: true` and empty `contents`. Sensitive paths (credentials, keys) are elided with `sensitive: true` and empty `contents`. + * Returns the set of file changes produced by a run as a list of before/after diffs. While the run\'s sandbox is reachable, diffs are resolved live against the sandbox working tree at the current HEAD. Degraded responses keep the same `data: FileDiff[]` shape. File contents are null on every entry; non-sensitive non-flagged entries include `unified_patch`, while sensitive / binary / symlink / submodule / truncated entries render through the same placeholder flags used by the live path. Responses are bounded by per-file (256 KiB / 20k lines), per-run aggregate (5 MiB), and per-request (200 files) caps. Files exceeding a cap are returned with `truncated: true` and empty `contents`. Sensitive paths (credentials, keys) are elided with `sensitive: true` and empty `contents`. * @summary List Run Files Changed * @param {string} id Unique run identifier (ULID). * @param {number} [pageLimit] Maximum number of items to return per page. @@ -194,7 +194,7 @@ export const RunOutputsApiFp = function(configuration?: Configuration) { const localVarAxiosParamCreator = RunOutputsApiAxiosParamCreator(configuration) return { /** - * Returns commits on the run branch since the run\'s base SHA, sourced directly from sandbox Git. The list uses first-parent chronological history and is capped by `limit` (default and maximum: 100). Commit data is Git-authoritative; Fabro-generated commit messages are not required for correctness. + * Returns commits on the run branch since the run\'s base SHA, sourced directly from sandbox Git. The list uses first-parent chronological history and is capped by `limit` (default and maximum: 100). Commit data is Git-authoritative; Fabro-generated commit messages are not required for correctness. * @summary List Run Commits * @param {string} id Unique run identifier (ULID). * @param {number} [limit] Maximum number of commits to return. Defaults to 100 and is capped at 100. @@ -208,7 +208,7 @@ export const RunOutputsApiFp = function(configuration?: Configuration) { return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, /** - * Returns the set of file changes produced by a run as a list of before/after diffs. While the run\'s sandbox is reachable, diffs are resolved live against the sandbox working tree at the current HEAD. Degraded responses keep the same `data: FileDiff[]` shape. File contents are null on every entry; non-sensitive non-flagged entries include `unified_patch`, while sensitive / binary / symlink / submodule / truncated entries render through the same placeholder flags used by the live path. Responses are bounded by per-file (256 KiB / 20k lines), per-run aggregate (5 MiB), and per-request (200 files) caps. Files exceeding a cap are returned with `truncated: true` and empty `contents`. Sensitive paths (credentials, keys) are elided with `sensitive: true` and empty `contents`. + * Returns the set of file changes produced by a run as a list of before/after diffs. While the run\'s sandbox is reachable, diffs are resolved live against the sandbox working tree at the current HEAD. Degraded responses keep the same `data: FileDiff[]` shape. File contents are null on every entry; non-sensitive non-flagged entries include `unified_patch`, while sensitive / binary / symlink / submodule / truncated entries render through the same placeholder flags used by the live path. Responses are bounded by per-file (256 KiB / 20k lines), per-run aggregate (5 MiB), and per-request (200 files) caps. Files exceeding a cap are returned with `truncated: true` and empty `contents`. Sensitive paths (credentials, keys) are elided with `sensitive: true` and empty `contents`. * @summary List Run Files Changed * @param {string} id Unique run identifier (ULID). * @param {number} [pageLimit] Maximum number of items to return per page. @@ -248,7 +248,7 @@ export const RunOutputsApiFactory = function (configuration?: Configuration, bas const localVarFp = RunOutputsApiFp(configuration) return { /** - * Returns commits on the run branch since the run\'s base SHA, sourced directly from sandbox Git. The list uses first-parent chronological history and is capped by `limit` (default and maximum: 100). Commit data is Git-authoritative; Fabro-generated commit messages are not required for correctness. + * Returns commits on the run branch since the run\'s base SHA, sourced directly from sandbox Git. The list uses first-parent chronological history and is capped by `limit` (default and maximum: 100). Commit data is Git-authoritative; Fabro-generated commit messages are not required for correctness. * @summary List Run Commits * @param {string} id Unique run identifier (ULID). * @param {number} [limit] Maximum number of commits to return. Defaults to 100 and is capped at 100. @@ -259,7 +259,7 @@ export const RunOutputsApiFactory = function (configuration?: Configuration, bas return localVarFp.listRunCommits(id, limit, options).then((request) => request(axios, basePath)); }, /** - * Returns the set of file changes produced by a run as a list of before/after diffs. While the run\'s sandbox is reachable, diffs are resolved live against the sandbox working tree at the current HEAD. Degraded responses keep the same `data: FileDiff[]` shape. File contents are null on every entry; non-sensitive non-flagged entries include `unified_patch`, while sensitive / binary / symlink / submodule / truncated entries render through the same placeholder flags used by the live path. Responses are bounded by per-file (256 KiB / 20k lines), per-run aggregate (5 MiB), and per-request (200 files) caps. Files exceeding a cap are returned with `truncated: true` and empty `contents`. Sensitive paths (credentials, keys) are elided with `sensitive: true` and empty `contents`. + * Returns the set of file changes produced by a run as a list of before/after diffs. While the run\'s sandbox is reachable, diffs are resolved live against the sandbox working tree at the current HEAD. Degraded responses keep the same `data: FileDiff[]` shape. File contents are null on every entry; non-sensitive non-flagged entries include `unified_patch`, while sensitive / binary / symlink / submodule / truncated entries render through the same placeholder flags used by the live path. Responses are bounded by per-file (256 KiB / 20k lines), per-run aggregate (5 MiB), and per-request (200 files) caps. Files exceeding a cap are returned with `truncated: true` and empty `contents`. Sensitive paths (credentials, keys) are elided with `sensitive: true` and empty `contents`. * @summary List Run Files Changed * @param {string} id Unique run identifier (ULID). * @param {number} [pageLimit] Maximum number of items to return per page. @@ -291,7 +291,7 @@ export const RunOutputsApiFactory = function (configuration?: Configuration, bas */ export class RunOutputsApi extends BaseAPI { /** - * Returns commits on the run branch since the run\'s base SHA, sourced directly from sandbox Git. The list uses first-parent chronological history and is capped by `limit` (default and maximum: 100). Commit data is Git-authoritative; Fabro-generated commit messages are not required for correctness. + * Returns commits on the run branch since the run\'s base SHA, sourced directly from sandbox Git. The list uses first-parent chronological history and is capped by `limit` (default and maximum: 100). Commit data is Git-authoritative; Fabro-generated commit messages are not required for correctness. * @summary List Run Commits * @param {string} id Unique run identifier (ULID). * @param {number} [limit] Maximum number of commits to return. Defaults to 100 and is capped at 100. @@ -303,7 +303,7 @@ export class RunOutputsApi extends BaseAPI { } /** - * Returns the set of file changes produced by a run as a list of before/after diffs. While the run\'s sandbox is reachable, diffs are resolved live against the sandbox working tree at the current HEAD. Degraded responses keep the same `data: FileDiff[]` shape. File contents are null on every entry; non-sensitive non-flagged entries include `unified_patch`, while sensitive / binary / symlink / submodule / truncated entries render through the same placeholder flags used by the live path. Responses are bounded by per-file (256 KiB / 20k lines), per-run aggregate (5 MiB), and per-request (200 files) caps. Files exceeding a cap are returned with `truncated: true` and empty `contents`. Sensitive paths (credentials, keys) are elided with `sensitive: true` and empty `contents`. + * Returns the set of file changes produced by a run as a list of before/after diffs. While the run\'s sandbox is reachable, diffs are resolved live against the sandbox working tree at the current HEAD. Degraded responses keep the same `data: FileDiff[]` shape. File contents are null on every entry; non-sensitive non-flagged entries include `unified_patch`, while sensitive / binary / symlink / submodule / truncated entries render through the same placeholder flags used by the live path. Responses are bounded by per-file (256 KiB / 20k lines), per-run aggregate (5 MiB), and per-request (200 files) caps. Files exceeding a cap are returned with `truncated: true` and empty `contents`. Sensitive paths (credentials, keys) are elided with `sensitive: true` and empty `contents`. * @summary List Run Files Changed * @param {string} id Unique run identifier (ULID). * @param {number} [pageLimit] Maximum number of items to return per page. 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 634b53a9d..2e90b30c3 100644 --- a/lib/packages/fabro-api-client/src/api/runs-api.ts +++ b/lib/packages/fabro-api-client/src/api/runs-api.ts @@ -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 @@ -71,7 +71,7 @@ import type { ValidateResponse } 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. @@ -193,7 +193,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} */ @@ -235,7 +235,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} */ @@ -322,10 +322,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} */ @@ -405,7 +405,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. @@ -550,7 +550,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} */ @@ -634,7 +634,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} */ @@ -841,10 +841,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} */ @@ -886,7 +886,7 @@ export const RunsApiAxiosParamCreator = function (configuration?: Configuration) /** * Validates runtime readiness for 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} */ @@ -928,7 +928,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} */ @@ -968,7 +968,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. @@ -1051,7 +1051,7 @@ export const RunsApiAxiosParamCreator = function (configuration?: Configuration) * Updates mutable run metadata. Title updates are allowed for all run states, including archived runs. * @summary Update Run * @param {string} id Unique run identifier (ULID). - * @param {UpdateRunRequest} updateRunRequest + * @param {UpdateRunRequest} updateRunRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -1095,7 +1095,7 @@ export const RunsApiAxiosParamCreator = function (configuration?: Configuration) /** * Validates workflow structure and diagnostics without runtime readiness checks. * @summary Validate Workflow Manifest - * @param {RunManifest} runManifest + * @param {RunManifest} runManifest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -1143,7 +1143,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. @@ -1184,7 +1184,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} */ @@ -1198,7 +1198,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} */ @@ -1223,10 +1223,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} */ @@ -1250,7 +1250,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. @@ -1296,7 +1296,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} */ @@ -1322,7 +1322,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} */ @@ -1386,10 +1386,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} */ @@ -1402,7 +1402,7 @@ export const RunsApiFp = function(configuration?: Configuration) { /** * Validates runtime readiness for 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} */ @@ -1416,7 +1416,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} */ @@ -1427,7 +1427,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. @@ -1456,7 +1456,7 @@ export const RunsApiFp = function(configuration?: Configuration) { * Updates mutable run metadata. Title updates are allowed for all run states, including archived runs. * @summary Update Run * @param {string} id Unique run identifier (ULID). - * @param {UpdateRunRequest} updateRunRequest + * @param {UpdateRunRequest} updateRunRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -1469,7 +1469,7 @@ export const RunsApiFp = function(configuration?: Configuration) { /** * Validates workflow structure and diagnostics without runtime readiness checks. * @summary Validate Workflow Manifest - * @param {RunManifest} runManifest + * @param {RunManifest} runManifest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -1489,7 +1489,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. @@ -1521,7 +1521,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} */ @@ -1532,7 +1532,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} */ @@ -1551,10 +1551,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} */ @@ -1572,7 +1572,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. @@ -1609,7 +1609,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} */ @@ -1629,7 +1629,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} */ @@ -1678,10 +1678,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} */ @@ -1691,7 +1691,7 @@ export const RunsApiFactory = function (configuration?: Configuration, basePath? /** * Validates runtime readiness for 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} */ @@ -1702,7 +1702,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} */ @@ -1710,7 +1710,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. @@ -1733,7 +1733,7 @@ export const RunsApiFactory = function (configuration?: Configuration, basePath? * Updates mutable run metadata. Title updates are allowed for all run states, including archived runs. * @summary Update Run * @param {string} id Unique run identifier (ULID). - * @param {UpdateRunRequest} updateRunRequest + * @param {UpdateRunRequest} updateRunRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -1743,7 +1743,7 @@ export const RunsApiFactory = function (configuration?: Configuration, basePath? /** * Validates workflow structure and diagnostics without runtime readiness checks. * @summary Validate Workflow Manifest - * @param {RunManifest} runManifest + * @param {RunManifest} runManifest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -1758,7 +1758,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. @@ -1793,7 +1793,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} */ @@ -1805,7 +1805,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} */ @@ -1826,10 +1826,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} */ @@ -1849,7 +1849,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. @@ -1889,7 +1889,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} */ @@ -1911,7 +1911,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} */ @@ -1965,10 +1965,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} */ @@ -1979,7 +1979,7 @@ export class RunsApi extends BaseAPI { /** * Validates runtime readiness for 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} */ @@ -1991,7 +1991,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} */ @@ -2000,7 +2000,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. @@ -2025,7 +2025,7 @@ export class RunsApi extends BaseAPI { * Updates mutable run metadata. Title updates are allowed for all run states, including archived runs. * @summary Update Run * @param {string} id Unique run identifier (ULID). - * @param {UpdateRunRequest} updateRunRequest + * @param {UpdateRunRequest} updateRunRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -2036,7 +2036,7 @@ export class RunsApi extends BaseAPI { /** * Validates workflow structure and diagnostics without runtime readiness checks. * @summary Validate Workflow Manifest - * @param {RunManifest} runManifest + * @param {RunManifest} runManifest * @param {*} [options] Override http request option. * @throws {RequiredError} */ diff --git a/lib/packages/fabro-api-client/src/models/auth-session.ts b/lib/packages/fabro-api-client/src/models/auth-session.ts index 05d9c815d..d57f6df59 100644 --- a/lib/packages/fabro-api-client/src/models/auth-session.ts +++ b/lib/packages/fabro-api-client/src/models/auth-session.ts @@ -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,5 +34,3 @@ export const AuthSessionKindEnum = { } as const; export type AuthSessionKindEnum = typeof AuthSessionKindEnum[keyof typeof AuthSessionKindEnum]; - - diff --git a/lib/packages/fabro-api-client/src/models/auth-sessions-response.ts b/lib/packages/fabro-api-client/src/models/auth-sessions-response.ts index fbf898951..82c01fb1d 100644 --- a/lib/packages/fabro-api-client/src/models/auth-sessions-response.ts +++ b/lib/packages/fabro-api-client/src/models/auth-sessions-response.ts @@ -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 @@ -20,4 +20,3 @@ import type { AuthSession } from './auth-session'; export interface AuthSessionsResponse { 'sessions': Array; } - diff --git a/lib/packages/fabro-api-client/src/models/automation-ref.ts b/lib/packages/fabro-api-client/src/models/automation-ref.ts index f965a18d0..46465579c 100644 --- a/lib/packages/fabro-api-client/src/models/automation-ref.ts +++ b/lib/packages/fabro-api-client/src/models/automation-ref.ts @@ -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 @@ -18,4 +18,3 @@ export interface AutomationRef { 'id': string; 'name': string | null; } - diff --git a/lib/packages/fabro-api-client/src/models/billing-model-ref.ts b/lib/packages/fabro-api-client/src/models/billing-model-ref.ts index 3d4cd2fec..b5ce39adb 100644 --- a/lib/packages/fabro-api-client/src/models/billing-model-ref.ts +++ b/lib/packages/fabro-api-client/src/models/billing-model-ref.ts @@ -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,6 +28,3 @@ export interface BillingModelRef { 'model_id': string; 'speed'?: BillingSpeed | null; } - - - diff --git a/lib/packages/fabro-api-client/src/models/billing-speed.ts b/lib/packages/fabro-api-client/src/models/billing-speed.ts index 127a5eb0b..3cad0e643 100644 --- a/lib/packages/fabro-api-client/src/models/billing-speed.ts +++ b/lib/packages/fabro-api-client/src/models/billing-speed.ts @@ -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 @@ -24,6 +24,3 @@ export const BillingSpeed = { } as const; export type BillingSpeed = typeof BillingSpeed[keyof typeof BillingSpeed]; - - - diff --git a/lib/packages/fabro-api-client/src/models/checkpoint-record.ts b/lib/packages/fabro-api-client/src/models/checkpoint-record.ts index 7dc4bfa42..9177008eb 100644 --- a/lib/packages/fabro-api-client/src/models/checkpoint-record.ts +++ b/lib/packages/fabro-api-client/src/models/checkpoint-record.ts @@ -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,4 +28,3 @@ export interface CheckpointRecord { 'checkpoint': RunCheckpoint; 'diff': RunDiff; } - diff --git a/lib/packages/fabro-api-client/src/models/conclusion.ts b/lib/packages/fabro-api-client/src/models/conclusion.ts index d9c455b39..daf429e69 100644 --- a/lib/packages/fabro-api-client/src/models/conclusion.ts +++ b/lib/packages/fabro-api-client/src/models/conclusion.ts @@ -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 @@ -40,6 +40,3 @@ export interface Conclusion { 'total_retries': number; 'diff': RunDiff; } - - - diff --git a/lib/packages/fabro-api-client/src/models/delete-run-response.ts b/lib/packages/fabro-api-client/src/models/delete-run-response.ts index 54e38ae3f..696f161ca 100644 --- a/lib/packages/fabro-api-client/src/models/delete-run-response.ts +++ b/lib/packages/fabro-api-client/src/models/delete-run-response.ts @@ -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 @@ -25,4 +25,3 @@ export interface DeleteRunResponse { 'sandbox_preserved': boolean; 'sandbox': DeleteRunSandbox; } - diff --git a/lib/packages/fabro-api-client/src/models/delete-run-sandbox.ts b/lib/packages/fabro-api-client/src/models/delete-run-sandbox.ts index 5c224237d..cc8410346 100644 --- a/lib/packages/fabro-api-client/src/models/delete-run-sandbox.ts +++ b/lib/packages/fabro-api-client/src/models/delete-run-sandbox.ts @@ -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,6 +21,3 @@ export interface DeleteRunSandbox { 'provider': SandboxProvider; 'id': string; } - - - diff --git a/lib/packages/fabro-api-client/src/models/paginated-board-run-list.ts b/lib/packages/fabro-api-client/src/models/paginated-board-run-list.ts index 3fb53d459..82be66feb 100644 --- a/lib/packages/fabro-api-client/src/models/paginated-board-run-list.ts +++ b/lib/packages/fabro-api-client/src/models/paginated-board-run-list.ts @@ -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 @@ -31,4 +31,3 @@ export interface PaginatedBoardRunList { 'data': Array; 'meta': PaginationMeta; } - diff --git a/lib/packages/fabro-api-client/src/models/paginated-run-commit-list.ts b/lib/packages/fabro-api-client/src/models/paginated-run-commit-list.ts index c3f93c6be..1290d80d2 100644 --- a/lib/packages/fabro-api-client/src/models/paginated-run-commit-list.ts +++ b/lib/packages/fabro-api-client/src/models/paginated-run-commit-list.ts @@ -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 @@ -27,4 +27,3 @@ export interface PaginatedRunCommitList { 'data': Array; 'meta': RunCommitsMeta; } - diff --git a/lib/packages/fabro-api-client/src/models/paginated-run-file-list.ts b/lib/packages/fabro-api-client/src/models/paginated-run-file-list.ts index 9f9eaf440..1d84791af 100644 --- a/lib/packages/fabro-api-client/src/models/paginated-run-file-list.ts +++ b/lib/packages/fabro-api-client/src/models/paginated-run-file-list.ts @@ -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,10 +21,9 @@ import type { FileDiff } from './file-diff'; import type { RunFilesMeta } from './run-files-meta'; /** - * List of file diffs produced by a run, with metadata describing truncation and degraded-response state. Naturally bounded: at most 200 files per response. Consumers should inspect `meta.truncated` rather than assuming `data.length` equals the run\'s total change count. + * List of file diffs produced by a run, with metadata describing truncation and degraded-response state. Naturally bounded: at most 200 files per response. Consumers should inspect `meta.truncated` rather than assuming `data.length` equals the run\'s total change count. */ export interface PaginatedRunFileList { 'data': Array; 'meta': RunFilesMeta; } - diff --git a/lib/packages/fabro-api-client/src/models/paginated-run-list.ts b/lib/packages/fabro-api-client/src/models/paginated-run-list.ts index d36007fa3..5aa510d61 100644 --- a/lib/packages/fabro-api-client/src/models/paginated-run-list.ts +++ b/lib/packages/fabro-api-client/src/models/paginated-run-list.ts @@ -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 @@ -27,4 +27,3 @@ export interface PaginatedRunList { 'data': Array; 'meta': PaginationMeta; } - diff --git a/lib/packages/fabro-api-client/src/models/pending-interview-record.ts b/lib/packages/fabro-api-client/src/models/pending-interview-record.ts index ec90b6579..8d98b95b8 100644 --- a/lib/packages/fabro-api-client/src/models/pending-interview-record.ts +++ b/lib/packages/fabro-api-client/src/models/pending-interview-record.ts @@ -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 @@ -24,4 +24,3 @@ export interface PendingInterviewRecord { 'question': InterviewQuestionRecord; 'started_at': string; } - diff --git a/lib/packages/fabro-api-client/src/models/pull-request-details-timestamps.ts b/lib/packages/fabro-api-client/src/models/pull-request-details-timestamps.ts index 5ca3e0a71..79a699d36 100644 --- a/lib/packages/fabro-api-client/src/models/pull-request-details-timestamps.ts +++ b/lib/packages/fabro-api-client/src/models/pull-request-details-timestamps.ts @@ -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 @@ -18,4 +18,3 @@ export interface PullRequestDetailsTimestamps { 'created_at': string; 'updated_at': string; } - diff --git a/lib/packages/fabro-api-client/src/models/pull-request-details.ts b/lib/packages/fabro-api-client/src/models/pull-request-details.ts index 104b9a94f..009cd9e0c 100644 --- a/lib/packages/fabro-api-client/src/models/pull-request-details.ts +++ b/lib/packages/fabro-api-client/src/models/pull-request-details.ts @@ -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 @@ -44,4 +44,3 @@ export interface PullRequestDetails { 'author': PullRequestUser; 'timestamps': PullRequestDetailsTimestamps; } - diff --git a/lib/packages/fabro-api-client/src/models/pull-request.ts b/lib/packages/fabro-api-client/src/models/pull-request.ts index 109ac4aac..d7cd74504 100644 --- a/lib/packages/fabro-api-client/src/models/pull-request.ts +++ b/lib/packages/fabro-api-client/src/models/pull-request.ts @@ -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 @@ -33,5 +33,3 @@ export const PullRequestProviderEnum = { } as const; export type PullRequestProviderEnum = typeof PullRequestProviderEnum[keyof typeof PullRequestProviderEnum]; - - diff --git a/lib/packages/fabro-api-client/src/models/repository-ref.ts b/lib/packages/fabro-api-client/src/models/repository-ref.ts index 492078034..1c9652e82 100644 --- a/lib/packages/fabro-api-client/src/models/repository-ref.ts +++ b/lib/packages/fabro-api-client/src/models/repository-ref.ts @@ -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 @@ -30,5 +30,3 @@ export const RepositoryRefProviderEnum = { } as const; export type RepositoryRefProviderEnum = typeof RepositoryRefProviderEnum[keyof typeof RepositoryRefProviderEnum]; - - diff --git a/lib/packages/fabro-api-client/src/models/run-billing-summary.ts b/lib/packages/fabro-api-client/src/models/run-billing-summary.ts index 41221d873..4e0cb5ee7 100644 --- a/lib/packages/fabro-api-client/src/models/run-billing-summary.ts +++ b/lib/packages/fabro-api-client/src/models/run-billing-summary.ts @@ -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 @@ -17,4 +17,3 @@ export interface RunBillingSummary { 'total_usd_micros': number | null; } - diff --git a/lib/packages/fabro-api-client/src/models/run-commit-parent.ts b/lib/packages/fabro-api-client/src/models/run-commit-parent.ts index 9d524e8f6..1cc1cea61 100644 --- a/lib/packages/fabro-api-client/src/models/run-commit-parent.ts +++ b/lib/packages/fabro-api-client/src/models/run-commit-parent.ts @@ -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,4 +21,3 @@ export interface RunCommitParent { 'sha': string; 'short_sha': string; } - diff --git a/lib/packages/fabro-api-client/src/models/run-commit-person.ts b/lib/packages/fabro-api-client/src/models/run-commit-person.ts index bc23e30c2..6a33f0ce6 100644 --- a/lib/packages/fabro-api-client/src/models/run-commit-person.ts +++ b/lib/packages/fabro-api-client/src/models/run-commit-person.ts @@ -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,4 +22,3 @@ export interface RunCommitPerson { 'email': string; 'date': string | null; } - diff --git a/lib/packages/fabro-api-client/src/models/run-commit.ts b/lib/packages/fabro-api-client/src/models/run-commit.ts index b81460c54..f0b033ffc 100644 --- a/lib/packages/fabro-api-client/src/models/run-commit.ts +++ b/lib/packages/fabro-api-client/src/models/run-commit.ts @@ -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 @@ -35,4 +35,3 @@ export interface RunCommit { 'trailers': { [key: string]: string; }; 'tree_sha': string | null; } - diff --git a/lib/packages/fabro-api-client/src/models/run-commits-meta.ts b/lib/packages/fabro-api-client/src/models/run-commits-meta.ts index d44b0a30c..06730f348 100644 --- a/lib/packages/fabro-api-client/src/models/run-commits-meta.ts +++ b/lib/packages/fabro-api-client/src/models/run-commits-meta.ts @@ -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 @@ -31,5 +31,3 @@ export const RunCommitsMetaSourceEnum = { } as const; export type RunCommitsMetaSourceEnum = typeof RunCommitsMetaSourceEnum[keyof typeof RunCommitsMetaSourceEnum]; - - diff --git a/lib/packages/fabro-api-client/src/models/run-diff.ts b/lib/packages/fabro-api-client/src/models/run-diff.ts index 8b8757baa..6b740259f 100644 --- a/lib/packages/fabro-api-client/src/models/run-diff.ts +++ b/lib/packages/fabro-api-client/src/models/run-diff.ts @@ -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 @@ -24,4 +24,3 @@ export interface RunDiff { 'patch'?: string | null; 'summary'?: DiffSummary | null; } - diff --git a/lib/packages/fabro-api-client/src/models/run-lifecycle.ts b/lib/packages/fabro-api-client/src/models/run-lifecycle.ts index aafe4629b..3c66a6ac2 100644 --- a/lib/packages/fabro-api-client/src/models/run-lifecycle.ts +++ b/lib/packages/fabro-api-client/src/models/run-lifecycle.ts @@ -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 @@ -31,6 +31,3 @@ export interface RunLifecycle { 'archived': boolean; 'archived_at': string | null; } - - - diff --git a/lib/packages/fabro-api-client/src/models/run-links.ts b/lib/packages/fabro-api-client/src/models/run-links.ts index 0789c6c03..ac0336dd7 100644 --- a/lib/packages/fabro-api-client/src/models/run-links.ts +++ b/lib/packages/fabro-api-client/src/models/run-links.ts @@ -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 @@ -17,4 +17,3 @@ export interface RunLinks { 'web': string | null; } - diff --git a/lib/packages/fabro-api-client/src/models/run-model.ts b/lib/packages/fabro-api-client/src/models/run-model.ts index d2f9b0c72..261182e70 100644 --- a/lib/packages/fabro-api-client/src/models/run-model.ts +++ b/lib/packages/fabro-api-client/src/models/run-model.ts @@ -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 @@ -18,4 +18,3 @@ export interface RunModel { 'provider': string | null; 'name': string; } - diff --git a/lib/packages/fabro-api-client/src/models/run-origin.ts b/lib/packages/fabro-api-client/src/models/run-origin.ts index b323ebe0b..fe4a05773 100644 --- a/lib/packages/fabro-api-client/src/models/run-origin.ts +++ b/lib/packages/fabro-api-client/src/models/run-origin.ts @@ -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 @@ -23,5 +23,3 @@ export const RunOriginKindEnum = { } as const; export type RunOriginKindEnum = typeof RunOriginKindEnum[keyof typeof RunOriginKindEnum]; - - diff --git a/lib/packages/fabro-api-client/src/models/run-projection.ts b/lib/packages/fabro-api-client/src/models/run-projection.ts index 624251dfb..ad7f63d83 100644 --- a/lib/packages/fabro-api-client/src/models/run-projection.ts +++ b/lib/packages/fabro-api-client/src/models/run-projection.ts @@ -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 @@ -74,6 +74,3 @@ export interface RunProjection { */ 'stages': { [key: string]: StageProjection; }; } - - - diff --git a/lib/packages/fabro-api-client/src/models/run-sandbox-runtime.ts b/lib/packages/fabro-api-client/src/models/run-sandbox-runtime.ts index 3d2e6fa1b..ee22d518a 100644 --- a/lib/packages/fabro-api-client/src/models/run-sandbox-runtime.ts +++ b/lib/packages/fabro-api-client/src/models/run-sandbox-runtime.ts @@ -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,4 +21,3 @@ export interface RunSandboxRuntime { 'clone_origin_url': string | null; 'clone_branch': string | null; } - diff --git a/lib/packages/fabro-api-client/src/models/run-sandbox-settings.ts b/lib/packages/fabro-api-client/src/models/run-sandbox-settings.ts index bfe260bac..4fe24f6be 100644 --- a/lib/packages/fabro-api-client/src/models/run-sandbox-settings.ts +++ b/lib/packages/fabro-api-client/src/models/run-sandbox-settings.ts @@ -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 @@ -32,6 +32,3 @@ export interface RunSandboxSettings { 'docker': DockerSettings | null; 'daytona': DaytonaSettings | null; } - - - diff --git a/lib/packages/fabro-api-client/src/models/run-sandbox.ts b/lib/packages/fabro-api-client/src/models/run-sandbox.ts index e7a9e0115..a06c1ad64 100644 --- a/lib/packages/fabro-api-client/src/models/run-sandbox.ts +++ b/lib/packages/fabro-api-client/src/models/run-sandbox.ts @@ -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 @@ -29,6 +29,3 @@ export interface RunSandbox { 'snapshot': string | null; 'runtime': RunSandboxRuntime | null; } - - - diff --git a/lib/packages/fabro-api-client/src/models/run-spec.ts b/lib/packages/fabro-api-client/src/models/run-spec.ts index 1ff38727d..2be7312b7 100644 --- a/lib/packages/fabro-api-client/src/models/run-spec.ts +++ b/lib/packages/fabro-api-client/src/models/run-spec.ts @@ -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 @@ -43,4 +43,3 @@ export interface RunSpec { 'git'?: GitContext | null; 'fork_source_ref'?: ForkSourceRef | null; } - diff --git a/lib/packages/fabro-api-client/src/models/run-status.ts b/lib/packages/fabro-api-client/src/models/run-status.ts index 153f875c1..3ca628bba 100644 --- a/lib/packages/fabro-api-client/src/models/run-status.ts +++ b/lib/packages/fabro-api-client/src/models/run-status.ts @@ -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 @@ -52,8 +52,6 @@ import type { RunStatusSucceeded } from './run-status-succeeded'; /** * @type RunStatus - * Execution status of a run. Archive state is represented separately on `RunLifecycle.archived` so terminal status payloads remain intact. + * Execution status of a run. Archive state is represented separately on `RunLifecycle.archived` so terminal status payloads remain intact. */ export type RunStatus = { kind: 'blocked' } & RunStatusBlocked | { kind: 'dead' } & RunStatusDead | { kind: 'failed' } & RunStatusFailed | { kind: 'paused' } & RunStatusPaused | { kind: 'queued' } & RunStatusQueued | { kind: 'removing' } & RunStatusRemoving | { kind: 'running' } & RunStatusRunning | { kind: 'starting' } & RunStatusStarting | { kind: 'submitted' } & RunStatusSubmitted | { kind: 'succeeded' } & RunStatusSucceeded; - - diff --git a/lib/packages/fabro-api-client/src/models/run-timestamps.ts b/lib/packages/fabro-api-client/src/models/run-timestamps.ts index 18ef61885..5debf5a4a 100644 --- a/lib/packages/fabro-api-client/src/models/run-timestamps.ts +++ b/lib/packages/fabro-api-client/src/models/run-timestamps.ts @@ -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,4 +22,3 @@ export interface RunTimestamps { 'duration_ms'?: number | null; 'elapsed_secs'?: number | null; } - diff --git a/lib/packages/fabro-api-client/src/models/run.ts b/lib/packages/fabro-api-client/src/models/run.ts index b93a79dc1..dca15afaf 100644 --- a/lib/packages/fabro-api-client/src/models/run.ts +++ b/lib/packages/fabro-api-client/src/models/run.ts @@ -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 @@ -81,4 +81,3 @@ export interface Run { 'superseded_by': string | null; 'links': RunLinks; } - diff --git a/lib/packages/fabro-api-client/src/models/sandbox-details.ts b/lib/packages/fabro-api-client/src/models/sandbox-details.ts index c3a917272..0ff2bf212 100644 --- a/lib/packages/fabro-api-client/src/models/sandbox-details.ts +++ b/lib/packages/fabro-api-client/src/models/sandbox-details.ts @@ -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 @@ -47,6 +47,3 @@ export interface SandboxDetails { 'labels': { [key: string]: string; }; 'timestamps': SandboxTimestamps; } - - - diff --git a/lib/packages/fabro-api-client/src/models/sandbox-provider.ts b/lib/packages/fabro-api-client/src/models/sandbox-provider.ts index 370b44c1c..ba15168e1 100644 --- a/lib/packages/fabro-api-client/src/models/sandbox-provider.ts +++ b/lib/packages/fabro-api-client/src/models/sandbox-provider.ts @@ -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 @@ -25,6 +25,3 @@ export const SandboxProvider = { } as const; export type SandboxProvider = typeof SandboxProvider[keyof typeof SandboxProvider]; - - - diff --git a/lib/packages/fabro-api-client/src/models/sandbox-resources.ts b/lib/packages/fabro-api-client/src/models/sandbox-resources.ts index c584edaba..662cdb3de 100644 --- a/lib/packages/fabro-api-client/src/models/sandbox-resources.ts +++ b/lib/packages/fabro-api-client/src/models/sandbox-resources.ts @@ -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 @@ -31,4 +31,3 @@ export interface SandboxResources { */ 'disk_bytes'?: number; } - diff --git a/lib/packages/fabro-api-client/src/models/sandbox-service-discovery-source.ts b/lib/packages/fabro-api-client/src/models/sandbox-service-discovery-source.ts index 78024461f..442f173e0 100644 --- a/lib/packages/fabro-api-client/src/models/sandbox-service-discovery-source.ts +++ b/lib/packages/fabro-api-client/src/models/sandbox-service-discovery-source.ts @@ -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 @@ -24,6 +24,3 @@ export const SandboxServiceDiscoverySource = { } as const; export type SandboxServiceDiscoverySource = typeof SandboxServiceDiscoverySource[keyof typeof SandboxServiceDiscoverySource]; - - - diff --git a/lib/packages/fabro-api-client/src/models/sandbox-service-list-meta.ts b/lib/packages/fabro-api-client/src/models/sandbox-service-list-meta.ts index 4d45b0489..eeba349a3 100644 --- a/lib/packages/fabro-api-client/src/models/sandbox-service-list-meta.ts +++ b/lib/packages/fabro-api-client/src/models/sandbox-service-list-meta.ts @@ -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 @@ -23,6 +23,3 @@ import type { SandboxServiceDiscoverySource } from './sandbox-service-discovery- export interface SandboxServiceListMeta { 'source': SandboxServiceDiscoverySource; } - - - diff --git a/lib/packages/fabro-api-client/src/models/sandbox-service-list-response.ts b/lib/packages/fabro-api-client/src/models/sandbox-service-list-response.ts index 86071eba6..1494ec5b7 100644 --- a/lib/packages/fabro-api-client/src/models/sandbox-service-list-response.ts +++ b/lib/packages/fabro-api-client/src/models/sandbox-service-list-response.ts @@ -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 @@ -27,4 +27,3 @@ export interface SandboxServiceListResponse { 'data': Array; 'meta': SandboxServiceListMeta; } - diff --git a/lib/packages/fabro-api-client/src/models/sandbox-service.ts b/lib/packages/fabro-api-client/src/models/sandbox-service.ts index 3b4c246ed..fffdbd642 100644 --- a/lib/packages/fabro-api-client/src/models/sandbox-service.ts +++ b/lib/packages/fabro-api-client/src/models/sandbox-service.ts @@ -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 @@ -35,4 +35,3 @@ export interface SandboxService { */ 'preview_supported': boolean; } - diff --git a/lib/packages/fabro-api-client/src/models/sandbox-state.ts b/lib/packages/fabro-api-client/src/models/sandbox-state.ts index 9867fe19d..38f785751 100644 --- a/lib/packages/fabro-api-client/src/models/sandbox-state.ts +++ b/lib/packages/fabro-api-client/src/models/sandbox-state.ts @@ -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 @@ -35,6 +35,3 @@ export const SandboxState = { } as const; export type SandboxState = typeof SandboxState[keyof typeof SandboxState]; - - - diff --git a/lib/packages/fabro-api-client/src/models/sandbox-timestamps.ts b/lib/packages/fabro-api-client/src/models/sandbox-timestamps.ts index 5785d1a74..83937e370 100644 --- a/lib/packages/fabro-api-client/src/models/sandbox-timestamps.ts +++ b/lib/packages/fabro-api-client/src/models/sandbox-timestamps.ts @@ -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 @@ -27,4 +27,3 @@ export interface SandboxTimestamps { */ 'last_activity_at'?: string; } - diff --git a/lib/packages/fabro-api-client/src/models/ssh-access-request.ts b/lib/packages/fabro-api-client/src/models/ssh-access-request.ts index f4bd5fdfc..9f75dc437 100644 --- a/lib/packages/fabro-api-client/src/models/ssh-access-request.ts +++ b/lib/packages/fabro-api-client/src/models/ssh-access-request.ts @@ -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 @@ -23,4 +23,3 @@ export interface SshAccessRequest { */ 'ttl_minutes': number; } - diff --git a/lib/packages/fabro-api-client/src/models/ssh-access-response.ts b/lib/packages/fabro-api-client/src/models/ssh-access-response.ts index 9638bcf03..4cbe63f52 100644 --- a/lib/packages/fabro-api-client/src/models/ssh-access-response.ts +++ b/lib/packages/fabro-api-client/src/models/ssh-access-response.ts @@ -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 @@ -23,4 +23,3 @@ export interface SshAccessResponse { */ 'command': string; } - diff --git a/lib/packages/fabro-api-client/src/models/stage-projection.ts b/lib/packages/fabro-api-client/src/models/stage-projection.ts index 87f3830ed..7021a8f9f 100644 --- a/lib/packages/fabro-api-client/src/models/stage-projection.ts +++ b/lib/packages/fabro-api-client/src/models/stage-projection.ts @@ -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 @@ -73,6 +73,3 @@ export interface StageProjection { */ 'state': StageState; } - - - diff --git a/lib/packages/fabro-api-client/src/models/stage-summary.ts b/lib/packages/fabro-api-client/src/models/stage-summary.ts index 8a811521b..527268c3f 100644 --- a/lib/packages/fabro-api-client/src/models/stage-summary.ts +++ b/lib/packages/fabro-api-client/src/models/stage-summary.ts @@ -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 @@ -24,4 +24,3 @@ export interface StageSummary { 'billing_usd_micros'?: number | null; 'retries': number; } - diff --git a/lib/packages/fabro-api-client/src/models/start-record.ts b/lib/packages/fabro-api-client/src/models/start-record.ts index a6f53654e..7882a9789 100644 --- a/lib/packages/fabro-api-client/src/models/start-record.ts +++ b/lib/packages/fabro-api-client/src/models/start-record.ts @@ -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,4 +22,3 @@ export interface StartRecord { 'run_branch'?: string | null; 'base_sha'?: string | null; } - diff --git a/lib/packages/fabro-api-client/src/models/vnc-preview-response.ts b/lib/packages/fabro-api-client/src/models/vnc-preview-response.ts index 1fa77e63c..aed16f52a 100644 --- a/lib/packages/fabro-api-client/src/models/vnc-preview-response.ts +++ b/lib/packages/fabro-api-client/src/models/vnc-preview-response.ts @@ -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 @@ -35,4 +35,3 @@ export interface VncPreviewResponse { */ 'expires_in_secs': number; } - diff --git a/lib/packages/fabro-api-client/src/models/workflow-ref.ts b/lib/packages/fabro-api-client/src/models/workflow-ref.ts index 5eccc32c3..9233a5396 100644 --- a/lib/packages/fabro-api-client/src/models/workflow-ref.ts +++ b/lib/packages/fabro-api-client/src/models/workflow-ref.ts @@ -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 @@ -18,4 +18,3 @@ export interface WorkflowRef { 'slug': string | null; 'name': string; } -