diff --git a/cofounder/api/build.js b/cofounder/api/build.js index 3d2d3a6..4a74d93 100644 --- a/cofounder/api/build.js +++ b/cofounder/api/build.js @@ -82,7 +82,7 @@ async function build({ system }) { return await queues[id].add(async () => { events.log.node.emit(`start`, { id, context, data }); const response = await retry( - async (bail) => { + async (bail, attempt) => { try { const fnresponse = await system.functions[id]({ context: { ...context, run: system.run }, @@ -94,6 +94,14 @@ async function build({ system }) { : data, }); + if (!fnresponse || (id === 'BACKEND:SERVER::GENERATE' && !fnresponse.backend.server.main.mjs)) { + if (attempt >= (parseInt(system.nodes[id].queue?.retry) || 5)) { + console.error(`backend:server:generate error - generated is empty after ${attempt} attempts`); + return { success: false }; + } + throw new Error("backend:server:generate error - generated is empty"); + } + return !fnresponse ? { success: false } : system.nodes[id].out?.length diff --git a/cofounder/api/system/functions/backend/server.js b/cofounder/api/system/functions/backend/server.js index 581f55b..777568e 100644 --- a/cofounder/api/system/functions/backend/server.js +++ b/cofounder/api/system/functions/backend/server.js @@ -311,7 +311,20 @@ now do the analysis , write the full working script and specify the dependencies const { mjs } = extraction; if (!mjs.length || !extraction.yaml) { - throw new Error("backend:server:generate error - generated is empty"); + console.error("backend:server:generate error - generated is empty"); + return { + backend: { + ...data.backend, + server: { + main: { + mjs: "", + dependencies: {}, + env: {}, + timestamp: Date.now(), + }, + }, + }, + }; } const parsedYaml = extraction.yaml ? yaml.parse(extraction.yaml) : {};