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
- Inspect the raw latest-mac.yml at ELECTRON_ALPHA_LATEST_MAC_YML_URL and confirm it contains a `path:` entry.
- Re-run the electron publish step so the mac artifact and manifest are uploaded together.
- 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
- Verify the alpha channel publish pipeline uploads both the artifact and its manifest atomically.
- Add a CI check that fetches latest-mac.yml after release and asserts version/path/sha512 all exist.
- Pin the electron-builder version so manifest schema stays stable.
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
- latest-mac.yml is missing sha512.
- Failed to fetch latest-mac.yml (${response.status} ${respons
- Request timed out.
- Timed out waiting for server health
- Connection lost
AI-assisted analysis of different-ai/openwork@2b7df46e8a (2026-09-01).
Data as JSON: /api/errors/d076d82ad666e085.
Report an issue: GitHub.