different-ai/openwork · error

latest-mac.yml is missing artifact path/url.

Error message

latest-mac.yml is missing artifact path/url.

What it means

parseElectronLatestMacYml parses the latest-mac.yml auto-update manifest fetched from electron builds and requires a non-empty artifact path/url. If the YAML lacks a `path` (or url) field, this error is thrown. It guards resolveElectronAlphaArtifact from returning an artifact that cannot be downloaded.

Source

Thrown at apps/app/src/app/lib/electron-alpha.ts:51

function resolveArtifactUrl(pathOrUrl: string): string {
  if (/^https:\/\//i.test(pathOrUrl)) return pathOrUrl;
  return new URL(pathOrUrl, `${ELECTRON_ALPHA_RELEASE_BASE_URL}/`).toString();
}

export function parseElectronLatestMacYml(
  raw: string,
  arch: "arm64" | "x64",
): ElectronAlphaArtifact {
  const version = parseYamlScalar(raw, "version");
  const path = parseYamlScalar(raw, "path") ?? parseFirstFileUrl(raw);
  const sha512 = parseYamlScalar(raw, "sha512");

  if (!version) {
    throw new Error("latest-mac.yml is missing version.");
  }
  if (!path) {
    throw new Error("latest-mac.yml is missing artifact path/url.");
  }
  if (!sha512) {
    throw new Error("latest-mac.yml is missing sha512.");
  }

  return {
    arch,
    manifestUrl: ELECTRON_ALPHA_LATEST_MAC_YML_URL,
    releaseUrl: ELECTRON_ALPHA_RELEASE_PAGE_URL,
    url: resolveArtifactUrl(path),
    path,
    version,
    sha512,
  };
}

export async function resolveElectronAlphaArtifact(
  arch: "arm64" | "x64" = "arm64",

View on GitHub (pinned to 2b7df46e8a)

Solutions

  1. Inspect the raw latest-mac.yml at ELECTRON_ALPHA_LATEST_MAC_YML_URL and confirm it contains a `path:` entry.
  2. Re-run the electron publish step so the mac artifact and manifest are uploaded together.
  3. Check the electron-builder version for manifest schema changes and update the parser keys if the field was renamed (e.g. `url`).

Example fix

// before: manifest missing path, silently parsed
const path = parseYamlScalar(raw, "path");
// after: log raw manifest when path is absent to aid diagnosis
if (!path) throw new Error(`latest-mac.yml is missing artifact path/url. raw=${raw.slice(0, 200)}`);
Defensive patterns

Strategy: validation

Validate before calling

const text = await (await desktopFetch(ELECTRON_ALPHA_LATEST_MAC_YML_URL, { headers: { Accept: "text/yaml, text/plain, */*" } })).text();
if (!/^path:\s*\S+/m.test(text)) throw new Error("Refusing update: manifest has no artifact path.");

Type guard

function hasManifestPath(m: { path?: unknown }): m is { path: string } {
  return typeof m.path === "string" && m.path.length > 0;
}

Try / catch

try {
  const artifact = await resolveElectronAlphaArtifact();
} catch (err) {
  if (err instanceof Error && err.message.includes("missing artifact path")) {
    // surface actionable message; skip update, keep current version
    console.warn("Alpha manifest incomplete; skipping update check.");
  } else throw err;
}

Prevention

When it happens

Trigger: Fetching ELECTRON_ALPHA_LATEST_MAC_YML_URL returns YAML without a `path` key — e.g. electron-builder published a manifest without a mac artifact, or the fetched document is an error page/redirect body that still parses loosely.

Common situations: Alpha/beta channel publishing pipeline misconfigured (no mac zip uploaded), manifest format changed between electron-builder versions, or a CDN/origin serving an HTML error page instead of the YAML.

Related errors


AI-assisted analysis of different-ai/openwork@2b7df46e8a (2026-09-01). Data as JSON: /api/errors/d076d82ad666e085. Report an issue: GitHub.