eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 1.5 kB
JavaScript
const WORKFLOW_COMPATIBILITY_PACKAGES=[`@workflow/core`,`@workflow/world`];function parseVersionLine(e){let t=/(\d+)\.(?:\d+|x|\*)(?:\.(?:\d+|x|\*))?(?:-([0-9A-Za-z.-]+))?/.exec(e.trim());if(t===null)return;let n=Number(t[1]);if(!Number.isInteger(n))return;let r=t[2];return{major:n,prereleaseTag:r===void 0?void 0:r.split(`.`)[0]}}function readDeclaredWorkflowDependency(t){for(let n of WORKFLOW_COMPATIBILITY_PACKAGES){let e=t.dependencies?.[n]??t.peerDependencies?.[n];if(typeof e==`string`&&e.trim().length>0)return{packageName:n,range:e}}}function isDefiniteLineMismatch(e,t){return e.major===t.major?e.prereleaseTag!==void 0&&t.prereleaseTag!==void 0&&e.prereleaseTag!==t.prereleaseTag:!0}function formatExpectedLine(e){return e.prereleaseTag===void 0?`${String(e.major)}.x`:`${String(e.major)}.0.0-${e.prereleaseTag} line`}function assertWorkflowWorldCompatibility(e){let t=readDeclaredWorkflowDependency(e.worldManifest);if(t===void 0)return;let n=parseVersionLine(t.range),r=parseVersionLine(e.expectedWorkflowVersion);if(n===void 0||r===void 0||!isDefiniteLineMismatch(n,r))return;let i=n.prereleaseTag===void 0?`${String(n.major)}.x`:`${String(n.major)}.x (${n.prereleaseTag} line)`;throw Error(`Configured Workflow world "${e.worldPackageName}" targets ${t.packageName} ${i}, but this eve release requires the ${t.packageName} ${formatExpectedLine(r)}. Install a matching world, e.g. \`pnpm add ${e.worldPackageName}@${e.expectedWorkflowVersion}\`.`)}export{assertWorkflowWorldCompatibility};