dreamer 1.0.3 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +2 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -742,14 +742,14 @@ ${_.length} row(s) returned`)}async function oB2(Z){try{let Y=await Z.v1.agents.
|
|
|
742
742
|
`));if(m.outputSchema)console.log(" Output Schema:"),console.log(JSON.stringify(m.outputSchema,null,2).split(`
|
|
743
743
|
`).map((l)=>` ${l}`).join(`
|
|
744
744
|
`));console.log("")}}}catch(Y){console.error("\u274C Unexpected error:",Y instanceof Error?Y.message:String(Y)),process.exit(1)}}async function rB2(Z,Y,H,G=!1){let N=hF(Y),F=gF(N),C=H?{runId:H}:{};if(G){let _=0;console.log(`Tailing logs for agent ${F.name} (${F.agentId})${H?` run ${H}`:""}...`),console.log("Press Ctrl+C to stop");let m=async()=>{try{let{data:Q1,error:F1}=await Z.v1.agents({id:F.agentId}).logs.get({query:C});if(F1){console.error(`Error fetching logs: ${JSON.stringify(F1)}`);return}if(Q1&&Q1.length>_)Q1.slice(_).forEach((y1)=>{let P1=y1.createdAt?new Date(y1.createdAt).toISOString():"Unknown",U1=typeof y1.data==="string"?y1.data:JSON.stringify(y1.data,null,2);console.log(`[${P1}] ${U1}`)}),_=Q1.length}catch(Q1){console.error(`Error: ${Q1}`)}};await m();let l=setInterval(m,1000);process.on("SIGINT",()=>{clearInterval(l),console.log(`
|
|
745
|
-
Stopped tailing logs`),process.exit(0)})}else{let{data:_,error:m}=await Z.v1.agents({id:F.agentId}).logs.get({query:C});if(m)throw new Error(`Error fetching logs: ${JSON.stringify(m)}`);if(!_||_.length===0){console.log(`No logs found for agent ${F.name} (${F.agentId})${H?` run ${H}`:""}`);return}console.log(`Logs for agent ${F.name} (${F.agentId})${H?` run ${H}`:""}:`),_.forEach((l)=>{let Q1=l.createdAt?new Date(l.createdAt).toISOString():"Unknown",F1=typeof l.data==="string"?l.data:JSON.stringify(l.data,null,2);console.log(`[${Q1}] ${F1}`)})}}var XK2=XD(XZ1(),1);import{spawnSync as LZ1}from"child_process";import N_4 from"crypto";import{cpSync as $K2,existsSync as Gs,mkdirSync as B_4,readFileSync as LT1,renameSync as OT1,writeFileSync as ws}from"fs";import{join as cF,resolve as ZK2}from"path";import{createInterface as K_4}from"readline";import{spawnSync as J_4}from"child_process";import{createWriteStream as Y_4,existsSync as eB2,mkdirSync as W_4,readdirSync as H_4,rmSync as z_4,writeFileSync as q_4}from"fs";import{join as DK2}from"path";function G_4(Z){if(!Z||Z.length===0)return;return Z.map((Y)=>{if(Y.type==="cron"){let G={type:"cron",defaultSchedule:Y.cronExpression,entrypoint:Y.entrypoint};if(Y.name)G.name=Y.name;return G}if(Y.type==="input"){let G={type:"input",entrypoint:Y.entrypoint};if(Y.contentTypes)G.contentTypes=Y.contentTypes;if(Y.name)G.name=Y.name;return G}if(Y.type==="email"){let G={type:"email",entrypoint:Y.entrypoint};if(Y.name)G.name=Y.name;if(Y.filters&&Object.keys(Y.filters).length>0)G.filters=Y.filters;return G}if(Y.type==="webhook"){console.log(`Skipping invalid webhook trigger (${Y.name??"unnamed"}) in published agent triggers`);return}throw new Error(`Unknown trigger type: ${Y.type||"unknown"}`)}).filter((Y)=>Y!==void 0)}function w_4(Z){if(!eB2(Z))return!0;return H_4(Z).length===0}async function V_4(Z,Y){let H=DK2("/tmp",`agent-bundle-${Date.now()}.tar.gz`);console.log("Downloading agent bundle...");let G=await fetch(Z);if(!G.ok)throw new Error(`Failed to download bundle: ${G.status} ${G.statusText}`);let N=Y_4(H);if(!G.body)throw new Error("No response body received");let F=G.body.getReader();try{while(!0){let{done:_,value:m}=await F.read();if(_)break;N.write(m)}}finally{N.end(),F.releaseLock()}await new Promise((_,m)=>{N.on("finish",()=>_()),N.on("error",m)}),console.log("\u2713 Download completed"),console.log(`Extracting bundle to: ${Y}`);let C=J_4("tar",["-xzf",H,"-C",Y,"--strip-components=1"],{encoding:"utf8"});if(C.status!==0)throw new Error(`Failed to extract bundle: ${C.stderr}`);z_4(H),console.log("\u2713 Bundle extracted successfully")}async function MZ1(Z,Y,H){let{data:G,error:N}=await Z.v1.agents({id:Y}).pull.get();if(N)throw new Error(`Failed to pull bundle: ${JSON.stringify(N)}`);console.log(`Found agent ${G.name} (${Y})`);let{downloadUrl:F,prd:C,triggerConfig:_}=G;if(!F)throw new Error(`No download URL found for agent ${Y}`);if(eB2(H)){if(!w_4(H))throw new Error(`Directory ${H} is not empty. Please use an empty directory.`);console.log(`\u2713 Directory ${H} is empty`)}else W_4(H,{recursive:!0}),console.log(`\u2713 Created directory ${H}`);await V_4(F,H),Js(H);let m=G_4(_),l={agentId:Y};if(m)l.triggers=m;wI(H,l);let Q1=DK2(H,"PRD.md");q_4(Q1,C,"utf8"),console.log(`\u2713 Successfully pulled bundle for agent ${G.name} (${Y})`),console.log(`
|
|
745
|
+
Stopped tailing logs`),process.exit(0)})}else{let{data:_,error:m}=await Z.v1.agents({id:F.agentId}).logs.get({query:C});if(m)throw new Error(`Error fetching logs: ${JSON.stringify(m)}`);if(!_||_.length===0){console.log(`No logs found for agent ${F.name} (${F.agentId})${H?` run ${H}`:""}`);return}console.log(`Logs for agent ${F.name} (${F.agentId})${H?` run ${H}`:""}:`),_.forEach((l)=>{let Q1=l.createdAt?new Date(l.createdAt).toISOString():"Unknown",F1=typeof l.data==="string"?l.data:JSON.stringify(l.data,null,2);console.log(`[${Q1}] ${F1}`)})}}var XK2=XD(XZ1(),1);import{spawnSync as LZ1}from"child_process";import N_4 from"crypto";import{cpSync as $K2,existsSync as Gs,mkdirSync as B_4,readFileSync as LT1,renameSync as OT1,writeFileSync as ws}from"fs";import{join as cF,resolve as ZK2}from"path";import{createInterface as K_4}from"readline";import{spawnSync as J_4}from"child_process";import{createWriteStream as Y_4,existsSync as eB2,mkdirSync as W_4,readdirSync as H_4,rmSync as z_4,writeFileSync as q_4}from"fs";import{join as DK2}from"path";function G_4(Z){if(!Z||Z.length===0)return;return Z.map((Y)=>{if(Y.type==="cron"){let G={type:"cron",defaultSchedule:Y.cronExpression,entrypoint:Y.entrypoint};if(Y.name)G.name=Y.name;return G}if(Y.type==="input"){let G={type:"input",entrypoint:Y.entrypoint};if(Y.contentTypes)G.contentTypes=Y.contentTypes;if(Y.name)G.name=Y.name;return G}if(Y.type==="email"){let G={type:"email",entrypoint:Y.entrypoint};if(Y.name)G.name=Y.name;if(Y.filters&&Object.keys(Y.filters).length>0)G.filters=Y.filters;return G}if(Y.type==="webhook"){console.log(`Skipping invalid webhook trigger (${Y.name??"unnamed"}) in published agent triggers`);return}throw new Error(`Unknown trigger type: ${Y.type||"unknown"}`)}).filter((Y)=>Y!==void 0)}function w_4(Z){if(!eB2(Z))return!0;return H_4(Z).length===0}async function V_4(Z,Y){let H=DK2("/tmp",`agent-bundle-${Date.now()}.tar.gz`);console.log("Downloading agent bundle...");let G=await fetch(Z);if(!G.ok)throw new Error(`Failed to download bundle: ${G.status} ${G.statusText}`);let N=Y_4(H);if(!G.body)throw new Error("No response body received");let F=G.body.getReader();try{while(!0){let{done:_,value:m}=await F.read();if(_)break;N.write(m)}}finally{N.end(),F.releaseLock()}await new Promise((_,m)=>{N.on("finish",()=>_()),N.on("error",m)}),console.log("\u2713 Download completed"),console.log(`Extracting bundle to: ${Y}`);let C=J_4("tar",["-xzf",H,"-C",Y,"--strip-components=1","--exclude=._*","--exclude=.DS_Store","--exclude=__MACOSX"],{encoding:"utf8"});if(C.status!==0)throw new Error(`Failed to extract bundle: ${C.stderr}`);z_4(H),console.log("\u2713 Bundle extracted successfully")}async function MZ1(Z,Y,H){let{data:G,error:N}=await Z.v1.agents({id:Y}).pull.get();if(N)throw new Error(`Failed to pull bundle: ${JSON.stringify(N)}`);console.log(`Found agent ${G.name} (${Y})`);let{downloadUrl:F,prd:C,triggerConfig:_}=G;if(!F)throw new Error(`No download URL found for agent ${Y}`);if(eB2(H)){if(!w_4(H))throw new Error(`Directory ${H} is not empty. Please use an empty directory.`);console.log(`\u2713 Directory ${H} is empty`)}else W_4(H,{recursive:!0}),console.log(`\u2713 Created directory ${H}`);await V_4(F,H),Js(H);let m=G_4(_),l={agentId:Y};if(m)l.triggers=m;wI(H,l);let Q1=DK2(H,"PRD.md");q_4(Q1,C,"utf8"),console.log(`\u2713 Successfully pulled bundle for agent ${G.name} (${Y})`),console.log(`
|
|
746
746
|
Next steps:`),console.log(` cd ${H}`),console.log(" bun install"),console.log(" bun run build")}var U_4=["@dev-agents/sdk-server","@dev-agents/sdk-client","@dev-agents/sdk-shared"];function QK2(Z){if(!Z)return"";try{return JSON.parse(`"${Z}"`)}catch{return Z}}function MT1(Z){let Y=K_4({input:process.stdin,output:process.stdout});return new Promise((H)=>{Y.question(Z,(G)=>{Y.close(),H(G.trim())})})}async function F_4(Z,Y,H,G){console.log(`Forking agent ${H}...`);let N=await Z.v1.agents({id:H}).get();if(N.data&&!N.error){if(!N.data.isShared){let o=await Z.v1.agents({id:H}).publish.post();if(o.error)throw new Error(`Failed to share agent for forking: ${JSON.stringify(o.error)}`)}}else{let o=await Z.v1.shared({agentId:H}).get();if(o.error||!o.data)throw new Error(`Cannot fork agent ${H}. This agent is either not shared, doesn't exist, or you don't have access to it. Error: ${JSON.stringify(o.error)}`);console.log(`\u2713 Found shared agent: ${o.data.name}`)}if(console.log(`Forking agent ${H}...`),G?.agentId)console.log(`Using custom agent ID: ${G.agentId}`);let F={trackSource:!1};if(G?.agentId)F.newAgentId=G.agentId;let C=await Z.v1.shared({agentId:H}).clone.post(F);if(C.error)throw new Error(`Failed to fork agent: ${JSON.stringify(C.error)}`);let _=C.data;console.log(`\u2713 Forked agent created with ID: ${_.id}`),await MZ1(Z,_.id,Y),Js(Y);let m=cF(Y,"PRD.md"),l=cF(Y,"PRD.md.template");if(Gs(m))OT1(m,l),console.log("\u2713 Moved original PRD.md to PRD.md.template");let Q1;if(G?.descriptionFile)try{Q1=LT1(G.descriptionFile,"utf8")}catch(o){throw new Error(`Failed to read description file '${G.descriptionFile}': ${o}`)}else Q1=G?.description||"";let F1=QK2(Q1);if(ws(m,F1,"utf8"),console.log("\u2713 Created new PRD.md"),G?.name)wI(Y,{name:G.name});console.log("\u2713 Fork complete!")}async function JK2(Z,Y,H){if(H?.forkAgentId){await F_4(Z,Y,H.forkAgentId,H);return}let G=qZ1();console.log(`Creating new agent project at: ${Y}`);let N=Y.split("/").pop()||"Untitled Agent",F=H?.name||await MT1(`Agent name (${N}): `)||N,C;if(H?.descriptionFile)try{C=LT1(H.descriptionFile,"utf8")}catch(q8){throw new Error(`Failed to read description file '${H.descriptionFile}': ${q8}`)}else C=H?.description||await MT1(`Agent description (${N}): `)||N;let _=QK2(C),m=H?.ui!==void 0?H.ui:await MT1("Does this agent have a UI? (y/N): ")==="y";B_4(Y,{recursive:!0});let l=["package.json.template","tsconfig.json",".gitignore.template"];for(let q8 of l){let e4=cF(G,q8),U0=cF(Y,q8);if(Gs(e4))$K2(e4,U0);else throw new Error(`Required template file not found: ${q8}`)}let Q1=cF(Y,"package.json.template"),F1=cF(Y,"package.json");if(Gs(Q1))OT1(Q1,F1);let o=H?.sdkTag?.trim();if(o&&Gs(F1))try{let q8=JSON.parse(LT1(F1,"utf8")),e4=q8.dependencies??{},U0=!1;for(let c0 of U_4)if(e4?.[c0])e4[c0]=o,U0=!0;if(U0)q8.dependencies=e4,ws(F1,`${JSON.stringify(q8,null,2)}
|
|
747
747
|
`),console.log(`\u2713 Set agent SDK dependencies to "${o}"`)}catch(q8){let e4=q8 instanceof Error?q8.message:String(q8);throw new Error(`Failed to update SDK dependencies: ${e4}`)}let y1=cF(Y,".gitignore.template"),P1=cF(Y,".gitignore");if(Gs(y1))OT1(y1,P1);if(LZ1("git",["--version"],{stdio:"ignore"}).status===0){if(LZ1("git",["rev-parse","--is-inside-work-tree"],{cwd:Y,stdio:"ignore"}).status!==0)LZ1("git",["init","-b","main"],{cwd:Y,stdio:"inherit"})}Js(Y);let w2={agentId:H?.agentId||N_4.randomUUID(),name:F,hasUi:m},C2;if(H?.allowedTools!==void 0)C2=H.allowedTools.map((q8)=>({serverName:q8}));if(C2)console.log(`Setting allowed tools: ${C2.map((q8)=>q8.serverName).join(", ")}`);else console.log("No tool restrictions (agent can use all tools)");WZ1(Y,C2),console.log(`\u2713 ${Py} created`),console.log("Syncing tool declarations from server..."),await Cy(Z,Y,!1,H?.allowedTools),console.log("\u2713 Tool declarations synced");let u2=`# Agent Configuration
|
|
748
748
|
${XK2.default.stringify(w2)}`,d4=cF(Y,"agent.yaml");ws(d4,u2,"utf8");let o4=cF(Y,"PRD.md"),C6=cF(Y,"PRD.md.orig");if(ws(o4,_,"utf8"),ws(C6,_,"utf8"),console.log("\u2713 Project created successfully!"),console.log(`\u2713 Created agent.yaml with name: "${F}" and ID: "${w2.agentId}"`),console.log("Installing dependencies..."),LZ1("bun",["install"],{cwd:Y,stdio:"inherit"}).status!==0)console.error("bun install failed"),process.exit(1);let C4=bN2(Y);if(!C4)throw new Error(`SDK template files not found in node_modules/@dev-agents/sdk-shared/template. This likely means the SDK package failed to install correctly. Try running 'bun install' manually in ${Y}`);console.log(`Copying SDK template files from: ${C4}`),$K2(C4,Y,{recursive:!0,force:!0}),console.log("\u2713 Copied SDK template files"),console.log("Next steps:");let D8=ZK2(Y)===ZK2(process.cwd()),G6=1;if(!D8)console.log(` ${G6}. cd ${Y}`),G6++;console.log(` ${G6}. bun run build`)}import{spawnSync as Ls}from"child_process";import{existsSync as iF,mkdtempSync as jp4,readdirSync as Ip4,readFileSync as AO,rmSync as Tp4}from"fs";import{tmpdir as dp4}from"os";import{join as AG}from"path";import aK2 from"vm";import{existsSync as cK2,readdirSync as Rp4,readFileSync as Ap4}from"fs";import{join as eT1}from"path";import{pathToFileURL as Pp4}from"url";var mZ=XD(H_(),1),uT1={name:"background-function-direct-call",validate:(Z,Y)=>{let H=[],G=mZ.default.createSourceFile(Z,Y,mZ.default.ScriptTarget.Latest,!0,mZ.default.ScriptKind.TSX),N=new Set,F=new Set;function C(F1){if(mZ.default.isCallExpression(F1)&&mZ.default.isIdentifier(F1.expression)&&F1.expression.text==="backgroundFunction")m(F1);mZ.default.forEachChild(F1,C)}function _(F1){if(mZ.default.isCallExpression(F1)&&mZ.default.isIdentifier(F1.expression)&&F1.expression.text==="serverFunction")l(F1);mZ.default.forEachChild(F1,_)}function m(F1){let o=F1.parent;while(o){if(mZ.default.isVariableDeclaration(o)&&mZ.default.isIdentifier(o.name)){N.add(o.name.text);break}o=o.parent}if(F1.arguments.length===0)return;let y1=F1.arguments[0];if(!y1||!mZ.default.isObjectLiteralExpression(y1))return;for(let P1 of y1.properties)if(mZ.default.isPropertyAssignment(P1)&&mZ.default.isIdentifier(P1.name)&&P1.name.text==="execute"){if(mZ.default.isIdentifier(P1.initializer))F.add(P1.initializer.text)}}function l(F1){if(F1.arguments.length===0)return;let o=F1.arguments[0];if(!o||!mZ.default.isObjectLiteralExpression(o))return;let y1;for(let P1 of o.properties)if(mZ.default.isPropertyAssignment(P1)&&mZ.default.isIdentifier(P1.name)&&P1.name.text==="execute")y1=P1.initializer;else if(mZ.default.isMethodDeclaration(P1)&&mZ.default.isIdentifier(P1.name)&&P1.name.text==="execute")y1=P1;if(!y1)return;if(mZ.default.isIdentifier(y1))return;Q1(y1)}function Q1(F1){function o(y1){if(mZ.default.isCallExpression(y1)&&mZ.default.isPropertyAccessExpression(y1.expression)&&mZ.default.isIdentifier(y1.expression.expression)&&mZ.default.isIdentifier(y1.expression.name)&&y1.expression.name.text==="execute"){let P1=y1.expression.expression.text;if(N.has(P1)){let U1=G.getLineAndCharacterOfPosition(y1.expression.getStart(G));H.push({severity:"error",message:`Direct call to background function execute property detected: ${P1}.execute(). Background functions are long-running and will cause server functions to timeout.`,file:Z,line:U1.line+1,column:U1.character+1,suggestion:`Invoke background function "${P1}" from the client SDK using call<typeof ${P1}>("${P1}", params) or use a trigger instead.`})}}if(mZ.default.isCallExpression(y1)&&mZ.default.isIdentifier(y1.expression)&&F.has(y1.expression.text)){let P1=y1.expression.text,U1=G.getLineAndCharacterOfPosition(y1.expression.getStart(G));H.push({severity:"error",message:`Direct call to function "${P1}" which is used as execute property in a background function. This will cause server functions to timeout.`,file:Z,line:U1.line+1,column:U1.character+1,suggestion:`Invoke the background function from the client SDK using call() or use a trigger instead of calling "${P1}" directly.`})}mZ.default.forEachChild(y1,o)}o(F1)}return C(G),_(G),H}};var DZ=XD(H_(),1),lT1={name:"circular-keydeps",validate:(Z,Y)=>{let H=[],G=DZ.default.createSourceFile(Z,Y,DZ.default.ScriptTarget.Latest,!0,DZ.default.ScriptKind.TS);function N(l){if(DZ.default.isCallExpression(l)&&DZ.default.isIdentifier(l.expression)&&l.expression.text==="serverGetterFunction")F(l);DZ.default.forEachChild(l,N)}function F(l){if(l.arguments.length===0)return;let Q1=l.arguments[0];if(!Q1)return;if(!DZ.default.isObjectLiteralExpression(Q1)){let P1=G.getLineAndCharacterOfPosition(Q1.getStart(G));H.push({severity:"warning",message:"serverGetterFunction config is not an object literal. Cannot statically analyze for circular dependencies",file:Z,line:P1.line+1,column:P1.character+1,suggestion:"Use an inline object literal for the config to enable validation"});return}let F1=[];if(DZ.default.isObjectLiteralExpression(Q1)){for(let P1 of Q1.properties)if(DZ.default.isPropertyAssignment(P1)&&DZ.default.isIdentifier(P1.name)&&P1.name.text==="keyDependencies")F1=_(P1.initializer)}if(F1.length===0)return;let o;if(DZ.default.isObjectLiteralExpression(Q1)){for(let P1 of Q1.properties)if(DZ.default.isPropertyAssignment(P1)&&DZ.default.isIdentifier(P1.name)&&P1.name.text==="execute")o=P1.initializer;else if(DZ.default.isMethodDeclaration(P1)&&DZ.default.isIdentifier(P1.name)&&P1.name.text==="execute")o=P1}if(!o)return;if(DZ.default.isIdentifier(o)){let P1=G.getLineAndCharacterOfPosition(o.getStart(G));H.push({severity:"warning",message:`execute references a function defined elsewhere (${o.text}). Cannot statically analyze for circular dependencies in keyDependencies: ${F1.join(", ")}`,file:Z,line:P1.line+1,column:P1.character+1,suggestion:"Define the function inline or ensure it doesn't call setValue with keys in keyDependencies"});return}let y1=C(o);if(!y1){let P1=G.getLineAndCharacterOfPosition(o.getStart(G));H.push({severity:"warning",message:`Cannot determine SDK parameter name from execute function. Cannot statically analyze for circular dependencies in keyDependencies: ${F1.join(", ")}`,file:Z,line:P1.line+1,column:P1.character+1,suggestion:"Ensure the execute function has at least one parameter (the SDK)"});return}m(o,F1,y1)}function C(l){if(DZ.default.isArrowFunction(l)||DZ.default.isFunctionExpression(l)||DZ.default.isMethodDeclaration(l)){let Q1=l.parameters[0];if(Q1&&DZ.default.isIdentifier(Q1.name))return Q1.name.text}return}function _(l){let Q1=[];if(DZ.default.isArrayLiteralExpression(l)){for(let F1 of l.elements)if(DZ.default.isStringLiteral(F1))Q1.push(F1.text);else if(DZ.default.isNoSubstitutionTemplateLiteral(F1))Q1.push(F1.text)}return Q1}function m(l,Q1,F1){function o(y1){if(DZ.default.isCallExpression(y1)&&DZ.default.isPropertyAccessExpression(y1.expression)&&DZ.default.isIdentifier(y1.expression.expression)&&y1.expression.expression.text===F1&&DZ.default.isIdentifier(y1.expression.name)&&y1.expression.name.text==="setValue"){if(y1.arguments.length>0){let P1=y1.arguments[0];if(!P1)return;let U1=G.getLineAndCharacterOfPosition(P1.getStart(G));if(DZ.default.isStringLiteral(P1)){let w2=P1.text;if(Q1.includes(w2))H.push({severity:"error",message:`Circular dependency detected: serverGetterFunction sets key "${w2}" which is in keyDependencies`,file:Z,line:U1.line+1,column:U1.character+1,suggestion:`Remove "${w2}" from keyDependencies or move the setValue call to a serverFunction instead`})}else if(DZ.default.isNoSubstitutionTemplateLiteral(P1)){let w2=P1.text;if(Q1.includes(w2))H.push({severity:"error",message:`Circular dependency detected: serverGetterFunction sets key \`${w2}\` which is in keyDependencies`,file:Z,line:U1.line+1,column:U1.character+1,suggestion:`Remove "${w2}" from keyDependencies or move the setValue call to a serverFunction instead`})}else H.push({severity:"warning",message:`setValue called with variable. Ensure it doesn't match keyDependencies: ${Q1.join(", ")}`,file:Z,line:U1.line+1,column:U1.character+1,suggestion:"Use string literals for keys to enable static analysis"})}}DZ.default.forEachChild(y1,o)}o(l)}return N(G),H}};var p3=XD(H_(),1);import{existsSync as cT1,readFileSync as tx4}from"fs";import{basename as rx4,dirname as ex4,join as Dp4,resolve as $p4}from"path";var vK2=3,Zp4=["useQuery","useMutation","useInfiniteQuery","useQueries","useQueryClient","useSuspenseQuery","useSuspenseInfiniteQuery","useMutationState","useIsFetching","useIsMutating"],iT1={name:"query-client-outside-provider",validate:(Z,Y)=>{if(rx4(Z)!=="App.tsx")return[];return Xp4(Z,Y)}};function Xp4(Z,Y){let H=[],G=p3.default.createSourceFile(Z,Y,p3.default.ScriptTarget.Latest,!0,p3.default.ScriptKind.TSX),N=mK2(G);if(!N)return H;let F=bK2(G),C=yK2(G,Z),m=nT1(N,F,G,new Set,0,C,new Set([Z]));for(let l of m)H.push({severity:"error",message:`React Query hook '${l.hookName}' called outside QueryClientProvider context. Hooks must be called inside components that are children of QueryClientProvider.`,file:l.file||Z,line:l.line,column:l.column,suggestion:"Move this hook call to a component that is rendered inside the QueryClientProvider, not in the App component itself."});return H}function mK2(Z){let Y;function H(G){if(p3.default.isFunctionDeclaration(G)&&G.modifiers?.some((N)=>N.kind===p3.default.SyntaxKind.ExportKeyword||N.kind===p3.default.SyntaxKind.DefaultKeyword)){Y=G;return}if(p3.default.isExportAssignment(G)&&!G.isExportEquals){let N=G.expression;if(p3.default.isIdentifier(N)){Y=Qp4(Z,N.text);return}if(p3.default.isFunctionExpression(N)||p3.default.isArrowFunction(N)){Y=N;return}}p3.default.forEachChild(G,H)}return H(Z),Y}function Qp4(Z,Y){let H;function G(N){if((p3.default.isFunctionDeclaration(N)||p3.default.isVariableDeclaration(N))&&N.name&&p3.default.isIdentifier(N.name)&&N.name.text===Y){if(p3.default.isVariableDeclaration(N)){if(N.initializer&&(p3.default.isArrowFunction(N.initializer)||p3.default.isFunctionExpression(N.initializer)))H=N.initializer}else H=N;return}p3.default.forEachChild(N,G)}return G(Z),H}function bK2(Z){let Y=new Map;function H(G){if(p3.default.isFunctionDeclaration(G)&&G.name)Y.set(G.name.text,G);if(p3.default.isVariableDeclaration(G)&&G.name&&p3.default.isIdentifier(G.name)){if(G.initializer&&(p3.default.isArrowFunction(G.initializer)||p3.default.isFunctionExpression(G.initializer)))Y.set(G.name.text,G.initializer)}p3.default.forEachChild(G,H)}return H(Z),Y}function yK2(Z,Y){let H=new Map;function G(N){if(p3.default.isImportDeclaration(N)){let F=N.moduleSpecifier;if(!p3.default.isStringLiteral(F))return;let C=F.text;if(!C.startsWith(".")&&!C.startsWith("/"))return;let _=Jp4(C,Y);if(!_)return;let m=N.importClause;if(!m)return;if(m.name)H.set(m.name.text,{localName:m.name.text,filePath:_,isDefault:!0});if(m.namedBindings&&p3.default.isNamedImports(m.namedBindings))for(let l of m.namedBindings.elements){let Q1=l.name.text,F1=l.propertyName?l.propertyName.text:Q1;H.set(Q1,{localName:Q1,filePath:_,exportedName:F1,isDefault:!1})}}p3.default.forEachChild(N,G)}return G(Z),H}function Jp4(Z,Y){try{let H=ex4(Y),G=$p4(H,Z),N=["",".ts",".tsx",".js",".jsx"];for(let F of N){let C=G+F;if(cT1(C))return C}for(let F of[".ts",".tsx",".js",".jsx"]){let C=Dp4(G,`index${F}`);if(cT1(C))return C}return}catch{return}}function nT1(Z,Y,H,G,N,F,C){let _=[];if(N>vK2)return _;let m;if(p3.default.isFunctionDeclaration(Z)||p3.default.isFunctionExpression(Z))m=Z.body;else if(p3.default.isArrowFunction(Z))m=Z.body;if(!m)return _;if(p3.default.isBlock(m))Yp4(m,Y,H,G,N,_,F,C);return _}function Yp4(Z,Y,H,G,N,F,C,_){for(let m of Z.statements){if(p3.default.isReturnStatement(m)){if(m.expression&&!p3.default.isJsxElement(m.expression))aT1(m.expression,Y,H,G,N,F,C,_);break}aT1(m,Y,H,G,N,F,C,_)}}function aT1(Z,Y,H,G,N,F,C,_){if(p3.default.isCallExpression(Z)){if(p3.default.isIdentifier(Z.expression)){let m=Z.expression.text;if(Zp4.includes(m)){let l=H.getLineAndCharacterOfPosition(Z.getStart(H));F.push({hookName:m,line:l.line+1,column:l.character+1,file:H.fileName})}else{let l=Y.get(m);if(l&&!G.has(m)){G.add(m);let Q1=nT1(l,Y,H,G,N+1,C,_);F.push(...Q1)}else if(!l){let Q1=C.get(m);if(Q1){let F1=Wp4(Q1,N+1,_);F.push(...F1)}}}}}p3.default.forEachChild(Z,(m)=>{aT1(m,Y,H,G,N,F,C,_)})}function Wp4(Z,Y,H){if(Y>vK2)return[];if(H.has(Z.filePath))return[];if(!cT1(Z.filePath)||!Z.filePath.includes("/src/"))return[];try{let G=tx4(Z.filePath,"utf8"),N=p3.default.createSourceFile(Z.filePath,G,p3.default.ScriptTarget.Latest,!0,p3.default.ScriptKind.TSX),F=new Set(H);F.add(Z.filePath);let C=bK2(N),_=yK2(N,Z.filePath),m;if(Z.isDefault)m=mK2(N);else{let l=Z.exportedName||Z.localName;m=Hp4(N,l)}if(!m)return[];return nT1(m,C,N,new Set,Y,_,F)}catch{return[]}}function Hp4(Z,Y){let H;function G(N){if(p3.default.isFunctionDeclaration(N)&&N.modifiers?.some((F)=>F.kind===p3.default.SyntaxKind.ExportKeyword)&&N.name&&N.name.text===Y){H=N;return}if(p3.default.isVariableStatement(N)&&N.modifiers?.some((F)=>F.kind===p3.default.SyntaxKind.ExportKeyword)){for(let F of N.declarationList.declarations)if(p3.default.isIdentifier(F.name)&&F.name.text===Y&&F.initializer&&(p3.default.isArrowFunction(F.initializer)||p3.default.isFunctionExpression(F.initializer))){H=F.initializer;return}}p3.default.forEachChild(N,G)}return G(Z),H}var bZ=XD(H_(),1);import{existsSync as zp4,readFileSync as qp4}from"fs";import{join as Gp4}from"path";var oT1={name:"query-client-usage",validate:(Z,Y)=>{let H=[],G=bZ.default.createSourceFile(Z,Y,bZ.default.ScriptTarget.Latest,!0,bZ.default.ScriptKind.TSX);if(Vp4(G)){let F=wp4(Z);if(!F)return H;let C=Gp4(F,"App.tsx");if(!zp4(C)){let l=Np4(G);if(l){let Q1=G.getLineAndCharacterOfPosition(l.getStart(G));H.push({severity:"error",message:"React Query is used but src/App.tsx was not found. App.tsx must wrap the app in QueryClientProvider.",file:Z,line:Q1.line+1,column:Q1.character+1,suggestion:"Create src/App.tsx with QueryClientProvider using agentQueryClient"})}return H}let _=qp4(C,"utf8"),m=Bp4(C,_);H.push(...m)}return H}};function wp4(Z){let Y=Z.split("/"),H=Y.lastIndexOf("src");if(H===-1)return;return Y.slice(0,H+1).join("/")}function Vp4(Z){let Y=!1;function H(G){if(bZ.default.isImportDeclaration(G)){let N=G.moduleSpecifier;if(bZ.default.isStringLiteral(N)&&N.text==="@tanstack/react-query")Y=!0}if(!Y)bZ.default.forEachChild(G,H)}return H(Z),Y}function Np4(Z){let Y;function H(G){if(bZ.default.isImportDeclaration(G)){let N=G.moduleSpecifier;if(bZ.default.isStringLiteral(N)&&N.text==="@tanstack/react-query")Y=G}if(!Y)bZ.default.forEachChild(G,H)}return H(Z),Y}function Bp4(Z,Y){let H=[],G=bZ.default.createSourceFile(Z,Y,bZ.default.ScriptTarget.Latest,!0,bZ.default.ScriptKind.TSX),N=!1,F=!1;function C(_){if(bZ.default.isImportDeclaration(_)){let m=_.moduleSpecifier;if(bZ.default.isStringLiteral(m)){if(m.text==="@dev-agents/sdk-client"){if(_.importClause?.namedBindings&&bZ.default.isNamedImports(_.importClause.namedBindings)){for(let l of _.importClause.namedBindings.elements)if(l.name.text==="agentQueryClient")N=!0}}else if(m.text==="@tanstack/react-query"){if(_.importClause?.namedBindings&&bZ.default.isNamedImports(_.importClause.namedBindings)){for(let l of _.importClause.namedBindings.elements)if(l.name.text==="QueryClientProvider")F=!0}}}}if(bZ.default.isNewExpression(_)&&bZ.default.isIdentifier(_.expression)&&_.expression.text==="QueryClient"){let m=G.getLineAndCharacterOfPosition(_.getStart(G));H.push({severity:"error",message:"Do not create a custom QueryClient. Use agentQueryClient from @dev-agents/sdk-client instead.",file:Z,line:m.line+1,column:m.character+1,suggestion:'Import agentQueryClient from "@dev-agents/sdk-client" and use it in QueryClientProvider'})}bZ.default.forEachChild(_,C)}if(C(G),!N)H.push({severity:"error",message:'Missing import: agentQueryClient from "@dev-agents/sdk-client". Required when using React Query.',file:Z,line:1,column:1,suggestion:'Add: import { agentQueryClient } from "@dev-agents/sdk-client";'});if(!F)H.push({severity:"error",message:'Missing import: QueryClientProvider from "@tanstack/react-query". Required to wrap your app.',file:Z,line:1,column:1,suggestion:'Add: import { QueryClientProvider } from "@tanstack/react-query";'});if(N&&F){if(!Kp4(G))H.push({severity:"error",message:"QueryClientProvider is imported but not used properly. Wrap your App component's return value with <QueryClientProvider client={agentQueryClient}>",file:Z,line:1,column:1,suggestion:"In your App component, wrap the returned JSX with: <QueryClientProvider client={agentQueryClient}>...your content...</QueryClientProvider>"})}return H}function Kp4(Z){let Y=!1;function H(G){if(bZ.default.isJsxOpeningElement(G)||bZ.default.isJsxSelfClosingElement(G)){let N=G.tagName;if(bZ.default.isIdentifier(N)&&N.text==="QueryClientProvider"){let F=G.attributes;if(bZ.default.isJsxAttributes(F)){for(let C of F.properties)if(bZ.default.isJsxAttribute(C)&&bZ.default.isIdentifier(C.name)&&C.name.text==="client"){if(C.initializer&&bZ.default.isJsxExpression(C.initializer)){let _=C.initializer.expression;if(_&&bZ.default.isIdentifier(_)&&_.text==="agentQueryClient")Y=!0}}}}}if(!Y)bZ.default.forEachChild(G,H)}return H(Z),Y}var RO=XD(H_(),1),sT1={name:"sdk-call-generics",validate:(Z,Y)=>{let H=[],G=RO.default.createSourceFile(Z,Y,RO.default.ScriptTarget.Latest,!0,RO.default.ScriptKind.TSX),N=new Map;function F(m){if(RO.default.isImportDeclaration(m))C(m);if(RO.default.isCallExpression(m))_(m);RO.default.forEachChild(m,F)}function C(m){let l=m.moduleSpecifier;if(!RO.default.isStringLiteral(l))return;let Q1=l.text;if(!Q1.includes("@dev-agents/sdk-client")&&!Q1.includes("sdk/client"))return;let F1=m.importClause?.namedBindings;if(!F1)return;if(RO.default.isNamedImports(F1))for(let o of F1.elements){let y1=o.propertyName?.text||o.name.text,P1=o.name.text;if(y1==="call")N.set(P1,!0)}}function _(m){let l=!1,Q1;if(RO.default.isIdentifier(m.expression)){if(Q1=m.expression.text,N.has(Q1))l=!0}if(!l)return;if(!(m.typeArguments&&m.typeArguments.length>0)){let o=G.getLineAndCharacterOfPosition(m.expression.getStart(G));H.push({severity:"error",message:"SDK call() must have an explicit generic type parameter. Use call<typeof YourServerFunction>(...) instead of call(...)",file:Z,line:o.line+1,column:o.character+1,suggestion:`Add a generic type parameter like: ${Q1}<typeof YourServerFunction>(...)`})}}return F(G),H}};var bQ=XD(H_(),1),uK2=XD(XZ1(),1);import{existsSync as tT1,readdirSync as Up4,readFileSync as hK2}from"fs";import{join as Fs}from"path";var gK2=!1,rT1={name:"trigger-entrypoint-validation",validate:(Z,Y)=>{if(gK2)return[];gK2=!0;let H=[];try{let G=Fp4(Z);if(!G)return[];let N=lK2(G);if(!N)return[];let F=Mp4(N);if(F.length===0)return[];let C=Fs(G,"src");if(!tT1(C)){for(let m of F)H.push({severity:"error",message:`Trigger entrypoint "${m.entrypoint}" cannot be validated: src directory not found`,file:N,line:1,column:1});return H}let _=Lp4(C);for(let m of F){if(m.type==="webhook"){H.push({severity:"error",message:"Webhook triggers cannot be published in agent.yaml - they must be created as personal triggers using the triggers tool",file:N,line:m.line,column:1,suggestion:"Remove this webhook trigger from agent.yaml and create it as a personal trigger using the agent triggers UI or triggers tool"});continue}let l=_.get(m.entrypoint);if(!l){H.push({severity:"error",message:`Trigger entrypoint "${m.entrypoint}" not found as a server function`,file:N,line:m.line,column:1,suggestion:`Create a ${m.type==="cron"?"backgroundFunction":"serverFunction or backgroundFunction"} named "${m.entrypoint}" with exported: true`});continue}if(!l.exported)H.push({severity:"error",message:`Trigger entrypoint "${m.entrypoint}" exists but is not exported`,file:l.file,line:l.line,column:l.column,suggestion:'Add "exported: true" to the function configuration'});if(m.type==="cron"){if(!l.hasEmptyTypeObject)H.push({severity:"error",message:`Cron trigger entrypoint "${m.entrypoint}" must have params: Type.Object({})`,file:l.file,line:l.paramsLine||l.line,column:l.paramsColumn||l.column,suggestion:"Set params to Type.Object({})"})}else if(m.type==="input"){if(!l.hasInputTriggerParamsSchema)H.push({severity:"error",message:`Input trigger entrypoint "${m.entrypoint}" must have params: InputTriggerParamsSchema (imported from @dev-agents/sdk-server)`,file:l.file,line:l.paramsLine||l.line,column:l.paramsColumn||l.column,suggestion:'Import InputTriggerParamsSchema from "@dev-agents/sdk-server" and set params to InputTriggerParamsSchema'})}else if(m.type==="email"){if(!l.hasEmailTriggerParamsSchema)H.push({severity:"error",message:`Email trigger entrypoint "${m.entrypoint}" must have params: EmailTriggerParamsSchema (imported from @dev-agents/sdk-server)`,file:l.file,line:l.paramsLine||l.line,column:l.paramsColumn||l.column,suggestion:'Import EmailTriggerParamsSchema from "@dev-agents/sdk-server" and set params to EmailTriggerParamsSchema'})}}}catch(G){H.push({severity:"warning",message:`Error during trigger entrypoint validation: ${G instanceof Error?G.message:String(G)}`,file:Z,line:1,column:1})}return H}};function Fp4(Z){let Y=Z;for(let H=0;H<10;H++)if(Y=Fs(Y,".."),lK2(Y))return Y;return null}function lK2(Z){let Y=Fs(Z,"agent.yaml"),H=Fs(Z,"agent.yml");if(tT1(Y))return Y;if(tT1(H))return H;return null}function Mp4(Z){let Y=hK2(Z,"utf8"),H=uK2.default.parse(Y);if(!H||!H.triggers||!Array.isArray(H.triggers))return[];let G=[],N=Y.split(`
|
|
749
749
|
`);for(let F of H.triggers){if(!F||typeof F!=="object")continue;let C=F.type;if(C!=="cron"&&C!=="input"&&C!=="email"&&C!=="webhook")continue;let _=F.entrypoint||"main",m=1,l=F.entrypoint?`entrypoint: ${F.entrypoint}`:`type: ${C}`;for(let Q1=0;Q1<N.length;Q1++)if(N[Q1]?.includes(l)){m=Q1+1;break}G.push({type:C,entrypoint:_,line:m})}return G}function Lp4(Z){let Y=new Map;function H(G){try{let N=Up4(G,{withFileTypes:!0});for(let F of N){let C=Fs(G,F.name);if(F.isDirectory())H(C);else if(F.name.endsWith(".ts")||F.name.endsWith(".tsx")){let _=hK2(C,"utf8"),m=Op4(C,_);for(let[l,Q1]of m)Y.set(l,Q1)}}}catch(N){}}return H(Z),Y}function Op4(Z,Y){let H=new Map,G=bQ.default.createSourceFile(Z,Y,bQ.default.ScriptTarget.Latest,!0,bQ.default.ScriptKind.TS),N=new Map,F=new Map,C=new Map,_=new Map;function m(P1){if(bQ.default.isImportDeclaration(P1))l(P1);if(bQ.default.isVariableStatement(P1))Q1(P1);bQ.default.forEachChild(P1,m)}function l(P1){let U1=P1.moduleSpecifier;if(!bQ.default.isStringLiteral(U1))return;let w2=U1.text,C2=w2.includes("@dev-agents/sdk-shared")||w2.includes("sdk/shared")||w2.includes("sdk-shared"),u2=w2.includes("@dev-agents/sdk-server")||w2.includes("sdk/server")||w2.includes("sdk-server"),d4=P1.importClause?.namedBindings;if(!d4)return;if(bQ.default.isNamedImports(d4))for(let o4 of d4.elements){let C6=o4.propertyName?.text||o4.name.text,Y4=o4.name.text;if(C2&&C6==="Type")N.set(Y4,!0);if(u2&&C6==="InputTriggerParamsSchema")F.set(Y4,!0);if(u2&&C6==="EmailTriggerParamsSchema")C.set(Y4,!0);if(u2&&C6==="WebhookTriggerParamsSchema")_.set(Y4,!0)}}function Q1(P1){if(!P1.modifiers?.some((w2)=>w2.kind===bQ.default.SyntaxKind.ExportKeyword))return;for(let w2 of P1.declarationList.declarations){if(!bQ.default.isIdentifier(w2.name))continue;let C2=w2.name.text;if(!w2.initializer||!bQ.default.isCallExpression(w2.initializer))continue;let u2=w2.initializer;if(!bQ.default.isIdentifier(u2.expression))continue;let d4=u2.expression.text;if(d4!=="serverFunction"&&d4!=="backgroundFunction")continue;if(u2.arguments.length===0)continue;let o4=u2.arguments[0];if(!o4||!bQ.default.isObjectLiteralExpression(o4))continue;let C6=!1,Y4=!1,C4=!1,D8=!1,G6,q8;for(let U0 of o4.properties)if(bQ.default.isPropertyAssignment(U0)&&bQ.default.isIdentifier(U0.name)){if(U0.name.text==="exported")C6=U0.initializer.kind===bQ.default.SyntaxKind.TrueKeyword;else if(U0.name.text==="params"){let c0=G.getLineAndCharacterOfPosition(U0.initializer.getStart(G));G6=c0.line+1,q8=c0.character+1,Y4=F1(U0.initializer),C4=o(U0.initializer),D8=y1(U0.initializer)}}let e4=G.getLineAndCharacterOfPosition(w2.name.getStart(G));H.set(C2,{name:C2,exported:C6,hasEmptyTypeObject:Y4,hasInputTriggerParamsSchema:C4,hasEmailTriggerParamsSchema:D8,file:Z,line:e4.line+1,column:e4.character+1,paramsLine:G6,paramsColumn:q8})}}function F1(P1){if(!bQ.default.isCallExpression(P1))return!1;if(bQ.default.isPropertyAccessExpression(P1.expression)){let U1=P1.expression;if(bQ.default.isIdentifier(U1.expression)&&bQ.default.isIdentifier(U1.name)){let w2=U1.expression.text;if(U1.name.text==="Object"&&N.has(w2)){if(P1.arguments.length===1){let u2=P1.arguments[0];if(u2&&bQ.default.isObjectLiteralExpression(u2)&&u2.properties.length===0)return!0}}}}return!1}function o(P1){if(bQ.default.isIdentifier(P1))return F.has(P1.text);return!1}function y1(P1){if(bQ.default.isIdentifier(P1))return C.has(P1.text);return!1}return m(G),H}var Cp4=[uT1,lT1,oT1,iT1,sT1,rT1];async function Ep4(Z){try{let Y=eT1(Z,"node_modules","@dev-agents","sdk-shared","dist","index.js");if(!cK2(Y))return console.warn(`Warning: Could not load validators from @dev-agents/sdk-shared: ${Y} does not exist`),[];let G=await import(Pp4(Y).href);if(G.validators&&Array.isArray(G.validators))return G.validators;return[]}catch(Y){return console.warn(`Warning: Could not load validators from @dev-agents/sdk-shared: ${Y instanceof Error?Y.message:String(Y)}`),[]}}async function EZ1(Z,Y){let H=Y??[...Cp4,...await Ep4(Z)],G=[],N=eT1(Z,"src");if(!cK2(N))return{issues:[],hasErrors:!1,hasWarnings:!1};function F(m){try{let l=Rp4(m,{withFileTypes:!0});for(let Q1 of l){let F1=eT1(m,Q1.name);if(Q1.isDirectory())F(F1);else if(Q1.name.endsWith(".ts")||Q1.name.endsWith(".tsx")){let o=Ap4(F1,"utf8");for(let y1 of H){let P1=y1.validate(F1,o);G.push(...P1)}}}}catch(l){console.warn(`Warning: Could not read directory ${m}: ${l instanceof Error?l.message:String(l)}`)}}F(N);let C=G.some((m)=>m.severity==="error"),_=G.some((m)=>m.severity==="warning");return{issues:G,hasErrors:C,hasWarnings:_}}function Ms(Z){let Y=[];if(Z.issues.length===0)return Y.push("Validating agent code..."),Y.push(""),Y.push(sJ.green("No validation issues found")),Y.push(""),Y.push(sJ.green("Validation passed")),Y.join(`
|
|
750
750
|
`);Y.push("Validating agent code..."),Y.push("");let H=Z.issues.filter((N)=>N.severity==="error"),G=Z.issues.filter((N)=>N.severity==="warning");if(H.length>0){Y.push(sJ.red(`Found ${H.length} error(s):`)),Y.push("");for(let N of H){if(Y.push(` ${N.file}:${N.line}:${N.column}`),Y.push(` ${N.message}`),N.suggestion)Y.push(sJ.cyan(` Suggestion: ${N.suggestion}`));Y.push("")}}if(G.length>0){Y.push(sJ.yellow(`Found ${G.length} warning(s):`)),Y.push("");for(let N of G){if(Y.push(` ${N.file}:${N.line}:${N.column}`),Y.push(` ${N.message}`),N.suggestion)Y.push(sJ.cyan(` Suggestion: ${N.suggestion}`));Y.push("")}}if(Z.hasErrors)Y.push(sJ.red("Validation failed with errors"));else if(Z.hasWarnings)Y.push(sJ.yellow("Validation completed with warnings"));return Y.join(`
|
|
751
751
|
`)}var iK2="project.tar.gz",nK2="code-bundle.tar.gz",oK2="drizzle.tar.gz";function Sp4(Z){if(Z===0)return"0 B";let Y=["B","KB","MB","GB","TB"],H=Math.floor(Math.log(Z)/Math.log(1024)),G=Z/1024**H;return`${H===0?G:Number(G.toFixed(2))} ${Y[H]} (${Z} bytes)`}function kp4(Z){if(!Z||Z.length===0)return;return Z.map((Y)=>{if(Y.type==="cron")return{type:"cron",cronExpression:Y.defaultSchedule,entrypoint:Y.entrypoint||e92,name:Y.name};if(Y.type==="input")return{type:"input",entrypoint:Y.entrypoint,contentTypes:Y.contentTypes,name:Y.name};if(Y.type==="email")return{type:"email",entrypoint:Y.entrypoint,name:Y.name,filters:Y.filters||{}};throw new Error(`Unknown trigger type: ${Y.type||"unknown"}`)})}function _p4(Z){let Y={},H=(G)=>{let N=AG(Z,"node_modules",G,"package.json");if(!iF(N))return;try{return JSON.parse(AO(N,"utf8")).version}catch(F){console.warn(`Warning: Failed to read version from ${G}: ${F instanceof Error?F.message:String(F)}`);return}};return Y.clientSdk=H("@dev-agents/sdk-client"),Y.serverSdk=H("@dev-agents/sdk-server"),Y.sharedSdk=H("@dev-agents/sdk-shared"),Y.agentCodeCli=Q_(),Y}function xp4(Z){if(!iF(Z))return[];let Y=AO(Z,"utf8"),H=[];for(let G of Y.split(`
|
|
752
|
-
`)){if(G=G.trim(),!G||G.startsWith("#"))continue;if(G.startsWith("!")){console.warn(`Warning: Negation pattern '${G}' in .gitignore is not supported and will be ignored`);continue}let N=G;if(N.endsWith("/"))N=N.slice(0,-1);H.push(N)}return H}function pp4(Z,Y){let H=AG(Z,".gitignore"),G=xp4(H),F=[...[".git","node_modules","*.tar.gz","dist"],...G],C=["-czf",Y];for(let _ of F)C.push("--exclude",_);C.push("."),console.log(`Creating project tar archive with ${F.length} exclusion patterns...`),Dd1(Z,C)}function fp4(Z,Y){let H=["-czf",Y];H.push("."),console.log("Creating code bundle tar archive..."),Dd1(AG(Z,"dist"),H)}function vp4(Z,Y){let H=["-czf",Y];H.push("drizzle"),H.push("drizzle.config.json"),console.log("Creating drizzle migrations tar archive..."),Dd1(Z,H)}function Dd1(Z,Y){let H=Ls("tar",Y,{cwd:Z,encoding:"utf8",stdio:["inherit","inherit","pipe"]});if(H.status!==0){let G=H.stderr||H.error?.message;throw console.error(G),new Error(`Failed to create tar archive. Exit code: ${H.status}. ${G}`)}}function mp4(Z,Y){let H=new Set;if(!iF(Z))return[];try{let N=AO(Z,"utf8");N=N.replace(/`[\s\S]*?`/g,"").replace(/\/\*[\s\S]*?\*\//g,"").replace(/\/\/.*$/gm,"");let F=/^\s*import\s*(?:\{[^}]+\}|[a-zA-Z_$][a-zA-Z0-9_$]*|(?:\*\s+as\s+[a-zA-Z_$][a-zA-Z0-9_$]*))\s*from\s*["'](?:[^"']*\/)?tools\/([^"'/]+?)(?:\.js)?["'];?/gm,C=N.matchAll(F);for(let _ of C){let[,m]=_;if(m)H.add(m)}}catch(N){console.warn(`Warning: Could not analyze file ${Z}: ${N instanceof Error?N.message:String(N)}`)}let G=[];for(let N of H)try{let F=AG(Y,"tools",`${N}.ts`);if(iF(F)){let _=AO(F,"utf8").match(/export\s+const\s+SERVER_INFO\s*=\s*\{([^}]+)\}/s);if(_?.[1]){let m=_[1],l=m.match(/serverName:\s*["']([^"']+)["']/),Q1=m.match(/serverVersion:\s*["']([^"']+)["']/);if(l?.[1]&&Q1?.[1])G.push({serverName:l[1],serverVersion:Q1[1]})}}}catch(F){console.warn(`Warning: Could not read SERVER_INFO from ${N}: ${F instanceof Error?F.message:String(F)}`)}return G}function bp4(Z){let Y=new Map,H=AG(Z,"src");if(!iF(H))return[];function G(N){try{let F=Ip4(N,{withFileTypes:!0});for(let C of F){let _=AG(N,C.name);if(C.isDirectory())G(_);else if(C.name.endsWith(".ts")||C.name.endsWith(".tsx")){let m=mp4(_,Z);for(let l of m)Y.set(l.serverName,l)}}}catch(F){console.warn(`Warning: Could not read directory ${N}: ${F instanceof Error?F.message:String(F)}`)}}return G(H),Array.from(Y.values()).sort((N,F)=>N.serverName.localeCompare(F.serverName))}function yp4(Z,Y){console.log("Analyzing code for used MCP tools...");let G=bp4(Z).map((m)=>({serverName:Pk(m.serverName),version:GD1(m.serverVersion)})),N=new Set(G.map((m)=>m.serverName)),F=Y.filter((m)=>!N.has(m.serverName));if(F.length>0)console.warn(`\u26A0\uFE0F Removing required tools that are no longer referenced in code: ${F.map((m)=>m.serverName).join(", ")}`);if(G.length>0)console.log(`Found ${G.length} used MCP servers: ${G.map((m)=>m.serverName).join(", ")}`);else console.log("No MCP tools detected in the code");let C=new Map(Y.map((m)=>[m.serverName,m]));return G.map((m)=>{let l=C.get(m.serverName),Q1=m.version??l?.version;if(Q1)return{serverName:m.serverName,version:Q1};return{serverName:m.serverName}}).sort((m,l)=>m.serverName.localeCompare(l.serverName))}async function sK2(Z,Y,H){let G={requiredTools:H};try{await Z.v1.agents({id:Y})["available-tools"].patch(G)}catch(N){console.warn(`Warning: Failed to update available tools: ${N instanceof Error?N.message:String(N)}`)}}function gp4(Z){try{let Y={module:{exports:{}},console:{log:()=>{},error:()=>{},warn:()=>{},info:()=>{},debug:()=>{}},fetch,require:x3,clearTimeout,setTimeout,process},H=aK2.createContext(Y);new aK2.Script(Z,{filename:"server.js"}).runInContext(H);let N=H.module.exports,F=[];for(let[C,_]of Object.entries(N))if(_&&typeof _==="object"&&"params"in _&&"execute"in _){let m=_;F.push({name:C,params:m.params,description:m.description,keyDependencies:m.keyDependencies,exported:m.exported??!1,type:m.type==="backgroundFunction"?"async":"sync"})}return F}catch(Y){throw console.error("Failed to extract server functions from agent code:",Y),Y}}async function tK2(Z,Y,H=!1){if(!H){let C=await EZ1(Y);if(C.hasErrors)throw console.log(Ms(C)),new Error("Validation failed. Fix errors before pushing.");if(C.hasWarnings)console.log(Ms(C)),console.log(`Proceeding with warnings...
|
|
752
|
+
`)){if(G=G.trim(),!G||G.startsWith("#"))continue;if(G.startsWith("!")){console.warn(`Warning: Negation pattern '${G}' in .gitignore is not supported and will be ignored`);continue}let N=G;if(N.endsWith("/"))N=N.slice(0,-1);H.push(N)}return H}function pp4(Z,Y){let H=AG(Z,".gitignore"),G=xp4(H),F=[...[".git","node_modules","*.tar.gz","dist","._*",".DS_Store","__MACOSX"],...G],C=["-czf",Y];for(let _ of F)C.push("--exclude",_);C.push("."),console.log(`Creating project tar archive with ${F.length} exclusion patterns...`),Dd1(Z,C)}function fp4(Z,Y){let H=["-czf",Y];H.push("."),console.log("Creating code bundle tar archive..."),Dd1(AG(Z,"dist"),H)}function vp4(Z,Y){let H=["-czf",Y];H.push("drizzle"),H.push("drizzle.config.json"),console.log("Creating drizzle migrations tar archive..."),Dd1(Z,H)}function Dd1(Z,Y){let H=Ls("tar",Y,{cwd:Z,encoding:"utf8",stdio:["inherit","inherit","pipe"]});if(H.status!==0){let G=H.stderr||H.error?.message;throw console.error(G),new Error(`Failed to create tar archive. Exit code: ${H.status}. ${G}`)}}function mp4(Z,Y){let H=new Set;if(!iF(Z))return[];try{let N=AO(Z,"utf8");N=N.replace(/`[\s\S]*?`/g,"").replace(/\/\*[\s\S]*?\*\//g,"").replace(/\/\/.*$/gm,"");let F=/^\s*import\s*(?:\{[^}]+\}|[a-zA-Z_$][a-zA-Z0-9_$]*|(?:\*\s+as\s+[a-zA-Z_$][a-zA-Z0-9_$]*))\s*from\s*["'](?:[^"']*\/)?tools\/([^"'/]+?)(?:\.js)?["'];?/gm,C=N.matchAll(F);for(let _ of C){let[,m]=_;if(m)H.add(m)}}catch(N){console.warn(`Warning: Could not analyze file ${Z}: ${N instanceof Error?N.message:String(N)}`)}let G=[];for(let N of H)try{let F=AG(Y,"tools",`${N}.ts`);if(iF(F)){let _=AO(F,"utf8").match(/export\s+const\s+SERVER_INFO\s*=\s*\{([^}]+)\}/s);if(_?.[1]){let m=_[1],l=m.match(/serverName:\s*["']([^"']+)["']/),Q1=m.match(/serverVersion:\s*["']([^"']+)["']/);if(l?.[1]&&Q1?.[1])G.push({serverName:l[1],serverVersion:Q1[1]})}}}catch(F){console.warn(`Warning: Could not read SERVER_INFO from ${N}: ${F instanceof Error?F.message:String(F)}`)}return G}function bp4(Z){let Y=new Map,H=AG(Z,"src");if(!iF(H))return[];function G(N){try{let F=Ip4(N,{withFileTypes:!0});for(let C of F){let _=AG(N,C.name);if(C.isDirectory())G(_);else if(C.name.endsWith(".ts")||C.name.endsWith(".tsx")){let m=mp4(_,Z);for(let l of m)Y.set(l.serverName,l)}}}catch(F){console.warn(`Warning: Could not read directory ${N}: ${F instanceof Error?F.message:String(F)}`)}}return G(H),Array.from(Y.values()).sort((N,F)=>N.serverName.localeCompare(F.serverName))}function yp4(Z,Y){console.log("Analyzing code for used MCP tools...");let G=bp4(Z).map((m)=>({serverName:Pk(m.serverName),version:GD1(m.serverVersion)})),N=new Set(G.map((m)=>m.serverName)),F=Y.filter((m)=>!N.has(m.serverName));if(F.length>0)console.warn(`\u26A0\uFE0F Removing required tools that are no longer referenced in code: ${F.map((m)=>m.serverName).join(", ")}`);if(G.length>0)console.log(`Found ${G.length} used MCP servers: ${G.map((m)=>m.serverName).join(", ")}`);else console.log("No MCP tools detected in the code");let C=new Map(Y.map((m)=>[m.serverName,m]));return G.map((m)=>{let l=C.get(m.serverName),Q1=m.version??l?.version;if(Q1)return{serverName:m.serverName,version:Q1};return{serverName:m.serverName}}).sort((m,l)=>m.serverName.localeCompare(l.serverName))}async function sK2(Z,Y,H){let G={requiredTools:H};try{await Z.v1.agents({id:Y})["available-tools"].patch(G)}catch(N){console.warn(`Warning: Failed to update available tools: ${N instanceof Error?N.message:String(N)}`)}}function gp4(Z){try{let Y={module:{exports:{}},console:{log:()=>{},error:()=>{},warn:()=>{},info:()=>{},debug:()=>{}},fetch,require:x3,clearTimeout,setTimeout,process},H=aK2.createContext(Y);new aK2.Script(Z,{filename:"server.js"}).runInContext(H);let N=H.module.exports,F=[];for(let[C,_]of Object.entries(N))if(_&&typeof _==="object"&&"params"in _&&"execute"in _){let m=_;F.push({name:C,params:m.params,description:m.description,keyDependencies:m.keyDependencies,exported:m.exported??!1,type:m.type==="backgroundFunction"?"async":"sync"})}return F}catch(Y){throw console.error("Failed to extract server functions from agent code:",Y),Y}}async function tK2(Z,Y,H=!1){if(!H){let C=await EZ1(Y);if(C.hasErrors)throw console.log(Ms(C)),new Error("Validation failed. Fix errors before pushing.");if(C.hasWarnings)console.log(Ms(C)),console.log(`Proceeding with warnings...
|
|
753
753
|
`);else console.log(`Validation passed
|
|
754
754
|
`)}let G=hF(Y),N=gF(G),F;try{F=jp4(AG(dp4(),`${fQ}-`)),console.log("Installing dependencies..."),Ls("bun",["install"],{cwd:Y,stdio:"inherit"});let C=AG(Y,"src","schema.ts"),_=AG(Y,"drizzle.config.json"),m;if(iF(C)&&iF(_)){console.log("Generating database migrations...");let G6=Ls("bun",["run","db:generate"],{cwd:Y,stdio:["pipe","pipe","pipe"],encoding:"utf8"}),q8=G6.stdout||"",e4=G6.stderr||"",U0=q8+e4;if(q8)console.log(q8);if(e4)console.error(e4);if(U0.includes("\u203A")||U0.includes("created or renamed")){let c5=U0.split(`
|
|
755
755
|
`).filter((M4)=>M4.includes("created or renamed")||M4.includes("\u203A")),g5=`\u274C Database migration generation failed due to an ambiguous schema change.
|