dreamer 0.0.0-alpha-20260102194131 → 0.0.0-alpha-20260103212135
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 +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -744,7 +744,7 @@ ${_.length} row(s) returned`)}async function bB2(Z,Y="."){let H=lB(Y),G=uB(H),N=
|
|
|
744
744
|
`).map((c)=>` ${c}`).join(`
|
|
745
745
|
`));console.log("")}}}catch(Y){console.error("\u274C Unexpected error:",Y instanceof Error?Y.message:String(Y)),process.exit(1)}}async function uB2(Z,Y,H,G=!1){let N=lB(Y),F=uB(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:V1}=await Z.v1.agents({id:F.agentId}).logs.get({query:C});if(V1){console.error(`Error fetching logs: ${JSON.stringify(V1)}`);return}if(Q1&&Q1.length>_)Q1.slice(_).forEach((v1)=>{let A1=v1.createdAt?new Date(v1.createdAt).toISOString():"Unknown",U1=typeof v1.data==="string"?v1.data:JSON.stringify(v1.data,null,2);console.log(`[${A1}] ${U1}`)}),_=Q1.length}catch(Q1){console.error(`Error: ${Q1}`)}};await m();let c=setInterval(m,1000);process.on("SIGINT",()=>{clearInterval(c),console.log(`
|
|
746
746
|
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 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((c)=>{let Q1=c.createdAt?new Date(c.createdAt).toISOString():"Unknown",V1=typeof c.data==="string"?c.data:JSON.stringify(c.data,null,2);console.log(`[${Q1}] ${V1}`)})}}var nB2=QD(KZ1(),1);import{spawnSync as kZ1}from"child_process";import tx4 from"crypto";import{cpSync as aB2,existsSync as Os,mkdirSync as rx4,readFileSync as aT1,renameSync as iT1,writeFileSync as Rs}from"fs";import{join as nF,resolve as iB2}from"path";import{createInterface as ex4}from"readline";import{spawnSync as hx4}from"child_process";import{createWriteStream as ux4,existsSync as lB2,mkdirSync as lx4,readdirSync as cx4,rmSync as ax4,writeFileSync as ix4}from"fs";import{join as cB2}from"path";function nx4(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 Error(`Unknown trigger type: ${Y.type||"unknown"}`)}).filter((Y)=>Y!==void 0)}function ox4(Z){if(!lB2(Z))return!0;return cx4(Z).length===0}async function sx4(Z,Y){let H=cB2("/tmp",`agent-bundle-${Date.now()}.tar.gz`);console.log("Downloading agent bundle...");let G=await fetch(Z);if(!G.ok)throw Error(`Failed to download bundle: ${G.status} ${G.statusText}`);let N=ux4(H);if(!G.body)throw 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=hx4("tar",["-xzf",H,"-C",Y,"--strip-components=1","--exclude=._*","--exclude=.DS_Store","--exclude=__MACOSX"],{encoding:"utf8"});if(C.status!==0)throw Error(`Failed to extract bundle: ${C.stderr}`);ax4(H),console.log("\u2713 Bundle extracted successfully")}async function SZ1(Z,Y,H){let{data:G,error:N}=await Z.v1.agents({id:Y}).pull.get();if(N)throw 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 Error(`No download URL found for agent ${Y}`);if(lB2(H)){if(!ox4(H))throw Error(`Directory ${H} is not empty. Please use an empty directory.`);console.log(`\u2713 Directory ${H} is empty`)}else lx4(H,{recursive:!0}),console.log(`\u2713 Created directory ${H}`);await sx4(F,H),Ks(H);let m=nx4(_),c={agentId:Y};if(m)c.triggers=m;BI(H,c);let Q1=cB2(H,"PRD.md");ix4(Q1,C,"utf8"),console.log(`\u2713 Successfully pulled bundle for agent ${G.name} (${Y})`),console.log(`
|
|
747
|
-
Next steps:`),console.log(` cd ${H}`),console.log(" bun install"),console.log(" bun run build")}var Dp4=["@dev-agents/sdk-server","@dev-agents/sdk-client","@dev-agents/sdk-shared"];function oB2(Z){if(!Z)return"";try{return JSON.parse(`"${Z}"`)}catch{return Z}}function cT1(Z){let Y=ex4({input:process.stdin,output:process.stdout});return new Promise((H)=>{Y.question(Z,(G)=>{Y.close(),H(G.trim())})})}async function $p4(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 a=await Z.v1.agents({id:H}).publish.post();if(a.error)throw Error(`Failed to share agent for forking: ${JSON.stringify(a.error)}`)}}else{let a=await Z.v1.shared({id:H}).get();if(a.error||!a.data)throw 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(a.error)}`);console.log(`\u2713 Found shared agent: ${a.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({id:H}).clone.post(F);if(C.error)throw Error(`Failed to fork agent: ${JSON.stringify(C.error)}`);let _=C.data;console.log(`\u2713 Forked agent created with ID: ${_.id}`),await SZ1(Z,_.id,Y),Ks(Y);let m=nF(Y,"PRD.md"),c=nF(Y,"PRD.md.template");if(Os(m))iT1(m,c),console.log("\u2713 Moved original PRD.md to PRD.md.template");let Q1;if(G?.descriptionFile)try{Q1=aT1(G.descriptionFile,"utf8")}catch(a){throw Error(`Failed to read description file '${G.descriptionFile}': ${a}`)}else Q1=G?.description||"";let V1=oB2(Q1);if(Rs(m,V1,"utf8"),console.log("\u2713 Created new PRD.md"),G?.name)BI(Y,{name:G.name});console.log("\u2713 Fork complete!")}async function sB2(Z,Y,H){if(H?.forkAgentId){await $p4(Z,Y,H.forkAgentId,H);return}let G=RZ1();console.log(`Creating new agent project at: ${Y}`);let N=Y.split("/").pop()||"Untitled Agent",F=H?.name||await cT1(`Agent name (${N}): `)||N,C;if(H?.descriptionFile)try{C=aT1(H.descriptionFile,"utf8")}catch(R8){throw Error(`Failed to read description file '${H.descriptionFile}': ${R8}`)}else C=H?.description||await cT1(`Agent description (${N}): `)||N;let _=oB2(C),m=H?.ui!==void 0?H.ui:await cT1("Does this agent have a UI? (y/N): ")==="y";rx4(Y,{recursive:!0});let c=["package.json.template","tsconfig.json",".gitignore.template"];for(let R8 of c){let D6=nF(G,R8),D0=nF(Y,R8);if(Os(D6))aB2(D6,D0);else throw Error(`Required template file not found: ${R8}`)}let Q1=nF(Y,"package.json.template"),V1=nF(Y,"package.json");if(Os(Q1))iT1(Q1,V1);let a=H?.sdkTag?.trim();if(a&&Os(V1))try{let R8=JSON.parse(aT1(V1,"utf8")),D6=R8.dependencies??{},D0=!1;for(let _0 of Dp4)if(D6?.[_0])D6[_0]=a,D0=!0;if(D0)R8.dependencies=D6,Rs(V1,`${JSON.stringify(R8,null,2)}
|
|
747
|
+
Next steps:`),console.log(` cd ${H}`),console.log(" bun install"),console.log(" bun run build")}var Dp4=["@dev-agents/sdk-server","@dev-agents/sdk-client","@dev-agents/sdk-shared"];function oB2(Z){if(!Z)return"";try{return JSON.parse(`"${Z}"`)}catch{return Z}}function cT1(Z){let Y=ex4({input:process.stdin,output:process.stdout});return new Promise((H)=>{Y.question(Z,(G)=>{Y.close(),H(G.trim())})})}async function $p4(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 a=await Z.v1.agents({id:H}).publish.post({});if(a.error)throw Error(`Failed to share agent for forking: ${JSON.stringify(a.error)}`)}}else{let a=await Z.v1.shared({id:H}).get();if(a.error||!a.data)throw 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(a.error)}`);console.log(`\u2713 Found shared agent: ${a.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({id:H}).clone.post(F);if(C.error)throw Error(`Failed to fork agent: ${JSON.stringify(C.error)}`);let _=C.data;console.log(`\u2713 Forked agent created with ID: ${_.id}`),await SZ1(Z,_.id,Y),Ks(Y);let m=nF(Y,"PRD.md"),c=nF(Y,"PRD.md.template");if(Os(m))iT1(m,c),console.log("\u2713 Moved original PRD.md to PRD.md.template");let Q1;if(G?.descriptionFile)try{Q1=aT1(G.descriptionFile,"utf8")}catch(a){throw Error(`Failed to read description file '${G.descriptionFile}': ${a}`)}else Q1=G?.description||"";let V1=oB2(Q1);if(Rs(m,V1,"utf8"),console.log("\u2713 Created new PRD.md"),G?.name)BI(Y,{name:G.name});console.log("\u2713 Fork complete!")}async function sB2(Z,Y,H){if(H?.forkAgentId){await $p4(Z,Y,H.forkAgentId,H);return}let G=RZ1();console.log(`Creating new agent project at: ${Y}`);let N=Y.split("/").pop()||"Untitled Agent",F=H?.name||await cT1(`Agent name (${N}): `)||N,C;if(H?.descriptionFile)try{C=aT1(H.descriptionFile,"utf8")}catch(R8){throw Error(`Failed to read description file '${H.descriptionFile}': ${R8}`)}else C=H?.description||await cT1(`Agent description (${N}): `)||N;let _=oB2(C),m=H?.ui!==void 0?H.ui:await cT1("Does this agent have a UI? (y/N): ")==="y";rx4(Y,{recursive:!0});let c=["package.json.template","tsconfig.json",".gitignore.template"];for(let R8 of c){let D6=nF(G,R8),D0=nF(Y,R8);if(Os(D6))aB2(D6,D0);else throw Error(`Required template file not found: ${R8}`)}let Q1=nF(Y,"package.json.template"),V1=nF(Y,"package.json");if(Os(Q1))iT1(Q1,V1);let a=H?.sdkTag?.trim();if(a&&Os(V1))try{let R8=JSON.parse(aT1(V1,"utf8")),D6=R8.dependencies??{},D0=!1;for(let _0 of Dp4)if(D6?.[_0])D6[_0]=a,D0=!0;if(D0)R8.dependencies=D6,Rs(V1,`${JSON.stringify(R8,null,2)}
|
|
748
748
|
`),console.log(`\u2713 Set agent SDK dependencies to "${a}"`)}catch(R8){let D6=R8 instanceof Error?R8.message:String(R8);throw Error(`Failed to update SDK dependencies: ${D6}`)}let v1=nF(Y,".gitignore.template"),A1=nF(Y,".gitignore");if(Os(v1))iT1(v1,A1);if(kZ1("git",["--version"],{stdio:"ignore"}).status===0){if(kZ1("git",["rev-parse","--is-inside-work-tree"],{cwd:Y,stdio:"ignore"}).status!==0)kZ1("git",["init","-b","main"],{cwd:Y,stdio:"inherit"})}Ks(Y);let w2={agentId:H?.agentId||tx4.randomUUID(),name:F,hasUi:m},P2;if(H?.allowedTools!==void 0)P2=H.allowedTools.map((R8)=>({serverName:R8}));if(P2)console.log(`Setting allowed tools: ${P2.map((R8)=>R8.serverName).join(", ")}`);else console.log("No tool restrictions (agent can use all tools)");MZ1(Y,P2),console.log(`\u2713 ${xy} created`),console.log("Syncing tool declarations from server..."),await py(Z,Y,!1,H?.allowedTools),console.log("\u2713 Tool declarations synced");let h2=`# Agent Configuration
|
|
749
749
|
${nB2.default.stringify(w2)}`,T4=nF(Y,"agent.yaml");Rs(T4,h2,"utf8");let Q6=nF(Y,"PRD.md"),P6=nF(Y,"PRD.md.orig");if(Rs(Q6,_,"utf8"),Rs(P6,_,"utf8"),console.log("\u2713 Project created successfully!"),console.log(`\u2713 Created agent.yaml with name: "${F}" and ID: "${w2.agentId}"`),console.log("Installing dependencies..."),kZ1("bun",["install"],{cwd:Y,stdio:"inherit"}).status!==0)console.error("bun install failed"),process.exit(1);let C4=IK2(Y);if(!C4)throw 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}`),aB2(C4,Y,{recursive:!0,force:!0}),console.log("\u2713 Copied SDK template files"),console.log("Next steps:");let s0=iB2(Y)===iB2(process.cwd()),I6=1;if(!s0)console.log(` ${I6}. cd ${Y}`),I6++;console.log(` ${I6}. bun run build`)}import{spawnSync as ds}from"child_process";import{existsSync as sF,mkdtempSync as qv4,readdirSync as Gv4,readFileSync as EO,rmSync as wv4}from"fs";import{tmpdir as Vv4}from"os";import{join as AG}from"path";import vU2 from"vm";import{existsSync as fU2,readdirSync as Jv4,readFileSync as Yv4}from"fs";import{join as Cd1}from"path";import{pathToFileURL as Wv4}from"url";var mZ=QD(N_(),1),Kd1={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(V1){if(mZ.default.isCallExpression(V1)&&mZ.default.isIdentifier(V1.expression)&&V1.expression.text==="backgroundFunction")m(V1);mZ.default.forEachChild(V1,C)}function _(V1){if(mZ.default.isCallExpression(V1)&&mZ.default.isIdentifier(V1.expression)&&V1.expression.text==="serverFunction")c(V1);mZ.default.forEachChild(V1,_)}function m(V1){let a=V1.parent;while(a){if(mZ.default.isVariableDeclaration(a)&&mZ.default.isIdentifier(a.name)){N.add(a.name.text);break}a=a.parent}if(V1.arguments.length===0)return;let v1=V1.arguments[0];if(!v1||!mZ.default.isObjectLiteralExpression(v1))return;for(let A1 of v1.properties)if(mZ.default.isPropertyAssignment(A1)&&mZ.default.isIdentifier(A1.name)&&A1.name.text==="execute"){if(mZ.default.isIdentifier(A1.initializer))F.add(A1.initializer.text)}}function c(V1){if(V1.arguments.length===0)return;let a=V1.arguments[0];if(!a||!mZ.default.isObjectLiteralExpression(a))return;let v1;for(let A1 of a.properties)if(mZ.default.isPropertyAssignment(A1)&&mZ.default.isIdentifier(A1.name)&&A1.name.text==="execute")v1=A1.initializer;else if(mZ.default.isMethodDeclaration(A1)&&mZ.default.isIdentifier(A1.name)&&A1.name.text==="execute")v1=A1;if(!v1)return;if(mZ.default.isIdentifier(v1))return;Q1(v1)}function Q1(V1){function a(v1){if(mZ.default.isCallExpression(v1)&&mZ.default.isPropertyAccessExpression(v1.expression)&&mZ.default.isIdentifier(v1.expression.expression)&&mZ.default.isIdentifier(v1.expression.name)&&v1.expression.name.text==="execute"){let A1=v1.expression.expression.text;if(N.has(A1)){let U1=G.getLineAndCharacterOfPosition(v1.expression.getStart(G));H.push({severity:"error",message:`Direct call to background function execute property detected: ${A1}.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 "${A1}" from the client SDK using call<typeof ${A1}>("${A1}", params) or use a trigger instead.`})}}if(mZ.default.isCallExpression(v1)&&mZ.default.isIdentifier(v1.expression)&&F.has(v1.expression.text)){let A1=v1.expression.text,U1=G.getLineAndCharacterOfPosition(v1.expression.getStart(G));H.push({severity:"error",message:`Direct call to function "${A1}" 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 "${A1}" directly.`})}mZ.default.forEachChild(v1,a)}a(V1)}return C(G),_(G),H}};var DZ=QD(N_(),1),Bd1={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(c){if(DZ.default.isCallExpression(c)&&DZ.default.isIdentifier(c.expression)&&c.expression.text==="serverGetterFunction")F(c);DZ.default.forEachChild(c,N)}function F(c){if(c.arguments.length===0)return;let Q1=c.arguments[0];if(!Q1)return;if(!DZ.default.isObjectLiteralExpression(Q1)){let A1=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:A1.line+1,column:A1.character+1,suggestion:"Use an inline object literal for the config to enable validation"});return}let V1=[];if(DZ.default.isObjectLiteralExpression(Q1)){for(let A1 of Q1.properties)if(DZ.default.isPropertyAssignment(A1)&&DZ.default.isIdentifier(A1.name)&&A1.name.text==="keyDependencies")V1=_(A1.initializer)}if(V1.length===0)return;let a;if(DZ.default.isObjectLiteralExpression(Q1)){for(let A1 of Q1.properties)if(DZ.default.isPropertyAssignment(A1)&&DZ.default.isIdentifier(A1.name)&&A1.name.text==="execute")a=A1.initializer;else if(DZ.default.isMethodDeclaration(A1)&&DZ.default.isIdentifier(A1.name)&&A1.name.text==="execute")a=A1}if(!a)return;if(DZ.default.isIdentifier(a)){let A1=G.getLineAndCharacterOfPosition(a.getStart(G));H.push({severity:"warning",message:`execute references a function defined elsewhere (${a.text}). Cannot statically analyze for circular dependencies in keyDependencies: ${V1.join(", ")}`,file:Z,line:A1.line+1,column:A1.character+1,suggestion:"Define the function inline or ensure it doesn't call setValue with keys in keyDependencies"});return}let v1=C(a);if(!v1){let A1=G.getLineAndCharacterOfPosition(a.getStart(G));H.push({severity:"warning",message:`Cannot determine SDK parameter name from execute function. Cannot statically analyze for circular dependencies in keyDependencies: ${V1.join(", ")}`,file:Z,line:A1.line+1,column:A1.character+1,suggestion:"Ensure the execute function has at least one parameter (the SDK)"});return}m(a,V1,v1)}function C(c){if(DZ.default.isArrowFunction(c)||DZ.default.isFunctionExpression(c)||DZ.default.isMethodDeclaration(c)){let Q1=c.parameters[0];if(Q1&&DZ.default.isIdentifier(Q1.name))return Q1.name.text}return}function _(c){let Q1=[];if(DZ.default.isArrayLiteralExpression(c)){for(let V1 of c.elements)if(DZ.default.isStringLiteral(V1))Q1.push(V1.text);else if(DZ.default.isNoSubstitutionTemplateLiteral(V1))Q1.push(V1.text)}return Q1}function m(c,Q1,V1){function a(v1){if(DZ.default.isCallExpression(v1)&&DZ.default.isPropertyAccessExpression(v1.expression)&&DZ.default.isIdentifier(v1.expression.expression)&&v1.expression.expression.text===V1&&DZ.default.isIdentifier(v1.expression.name)&&v1.expression.name.text==="setValue"){if(v1.arguments.length>0){let A1=v1.arguments[0];if(!A1)return;let U1=G.getLineAndCharacterOfPosition(A1.getStart(G));if(DZ.default.isStringLiteral(A1)){let w2=A1.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(A1)){let w2=A1.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(v1,a)}a(c)}return N(G),H}};var p3=QD(N_(),1);import{existsSync as Ud1,readFileSync as xf4}from"fs";import{basename as pf4,dirname as ff4,join as vf4,resolve as mf4}from"path";var IU2=3,bf4=["useQuery","useMutation","useInfiniteQuery","useQueries","useQueryClient","useSuspenseQuery","useSuspenseInfiniteQuery","useMutationState","useIsFetching","useIsMutating"],Md1={name:"query-client-outside-provider",validate:(Z,Y)=>{if(pf4(Z)!=="App.tsx")return[];return yf4(Z,Y)}};function yf4(Z,Y){let H=[],G=p3.default.createSourceFile(Z,Y,p3.default.ScriptTarget.Latest,!0,p3.default.ScriptKind.TSX),N=TU2(G);if(!N)return H;let F=dU2(G),C=SU2(G,Z),m=Ld1(N,F,G,new Set,0,C,new Set([Z]));for(let c of m)H.push({severity:"error",message:`React Query hook '${c.hookName}' called outside QueryClientProvider context. Hooks must be called inside components that are children of QueryClientProvider.`,file:c.file||Z,line:c.line,column:c.column,suggestion:"Move this hook call to a component that is rendered inside the QueryClientProvider, not in the App component itself."});return H}function TU2(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=gf4(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 gf4(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 dU2(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 SU2(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 _=hf4(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 c of m.namedBindings.elements){let Q1=c.name.text,V1=c.propertyName?c.propertyName.text:Q1;H.set(Q1,{localName:Q1,filePath:_,exportedName:V1,isDefault:!1})}}p3.default.forEachChild(N,G)}return G(Z),H}function hf4(Z,Y){try{let H=ff4(Y),G=mf4(H,Z),N=["",".ts",".tsx",".js",".jsx"];for(let F of N){let C=G+F;if(Ud1(C))return C}for(let F of[".ts",".tsx",".js",".jsx"]){let C=vf4(G,`index${F}`);if(Ud1(C))return C}return}catch{return}}function Ld1(Z,Y,H,G,N,F,C){let _=[];if(N>IU2)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))uf4(m,Y,H,G,N,_,F,C);return _}function uf4(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))Fd1(m.expression,Y,H,G,N,F,C,_);break}Fd1(m,Y,H,G,N,F,C,_)}}function Fd1(Z,Y,H,G,N,F,C,_){if(p3.default.isCallExpression(Z)){if(p3.default.isIdentifier(Z.expression)){let m=Z.expression.text;if(bf4.includes(m)){let c=H.getLineAndCharacterOfPosition(Z.getStart(H));F.push({hookName:m,line:c.line+1,column:c.character+1,file:H.fileName})}else{let c=Y.get(m);if(c&&!G.has(m)){G.add(m);let Q1=Ld1(c,Y,H,G,N+1,C,_);F.push(...Q1)}else if(!c){let Q1=C.get(m);if(Q1){let V1=lf4(Q1,N+1,_);F.push(...V1)}}}}}p3.default.forEachChild(Z,(m)=>{Fd1(m,Y,H,G,N,F,C,_)})}function lf4(Z,Y,H){if(Y>IU2)return[];if(H.has(Z.filePath))return[];if(!Ud1(Z.filePath)||!Z.filePath.includes("/src/"))return[];try{let G=xf4(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=dU2(N),_=SU2(N,Z.filePath),m;if(Z.isDefault)m=TU2(N);else{let c=Z.exportedName||Z.localName;m=cf4(N,c)}if(!m)return[];return Ld1(m,C,N,new Set,Y,_,F)}catch{return[]}}function cf4(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=QD(N_(),1);import{existsSync as af4,readFileSync as if4}from"fs";import{join as nf4}from"path";var Od1={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(sf4(G)){let F=of4(Z);if(!F)return H;let C=nf4(F,"App.tsx");if(!af4(C)){let c=tf4(G);if(c){let Q1=G.getLineAndCharacterOfPosition(c.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 _=if4(C,"utf8"),m=rf4(C,_);H.push(...m)}return H}};function of4(Z){let Y=Z.split("/"),H=Y.lastIndexOf("src");if(H===-1)return;return Y.slice(0,H+1).join("/")}function sf4(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 tf4(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 rf4(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 c of _.importClause.namedBindings.elements)if(c.name.text==="agentQueryClient")N=!0}}else if(m.text==="@tanstack/react-query"){if(_.importClause?.namedBindings&&bZ.default.isNamedImports(_.importClause.namedBindings)){for(let c of _.importClause.namedBindings.elements)if(c.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(!ef4(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 ef4(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 CO=QD(N_(),1),Rd1={name:"sdk-call-generics",validate:(Z,Y)=>{let H=[],G=CO.default.createSourceFile(Z,Y,CO.default.ScriptTarget.Latest,!0,CO.default.ScriptKind.TSX),N=new Map;function F(m){if(CO.default.isImportDeclaration(m))C(m);if(CO.default.isCallExpression(m))_(m);CO.default.forEachChild(m,F)}function C(m){let c=m.moduleSpecifier;if(!CO.default.isStringLiteral(c))return;let Q1=c.text;if(!Q1.includes("@dev-agents/sdk-client")&&!Q1.includes("sdk/client"))return;let V1=m.importClause?.namedBindings;if(!V1)return;if(CO.default.isNamedImports(V1))for(let a of V1.elements){let v1=a.propertyName?.text||a.name.text,A1=a.name.text;if(v1==="call")N.set(A1,!0)}}function _(m){let c=!1,Q1;if(CO.default.isIdentifier(m.expression)){if(Q1=m.expression.text,N.has(Q1))c=!0}if(!c)return;if(!(m.typeArguments&&m.typeArguments.length>0)){let a=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:a.line+1,column:a.character+1,suggestion:`Add a generic type parameter like: ${Q1}<typeof YourServerFunction>(...)`})}}return F(G),H}};var bQ=QD(N_(),1),xU2=QD(KZ1(),1);import{existsSync as Ad1,readdirSync as Dv4,readFileSync as _U2}from"fs";import{join as Is}from"path";var kU2=!1,Pd1={name:"trigger-entrypoint-validation",validate:(Z,Y)=>{if(kU2)return[];kU2=!0;let H=[];try{let G=$v4(Z);if(!G)return[];let N=pU2(G);if(!N)return[];let F=Zv4(N);if(F.length===0)return[];let C=Is(G,"src");if(!Ad1(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 _=Xv4(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 c=_.get(m.entrypoint);if(!c){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(!c.exported)H.push({severity:"error",message:`Trigger entrypoint "${m.entrypoint}" exists but is not exported`,file:c.file,line:c.line,column:c.column,suggestion:'Add "exported: true" to the function configuration'});if(m.type==="cron"){if(!c.hasEmptyTypeObject)H.push({severity:"error",message:`Cron trigger entrypoint "${m.entrypoint}" must have params: Type.Object({})`,file:c.file,line:c.paramsLine||c.line,column:c.paramsColumn||c.column,suggestion:"Set params to Type.Object({})"})}else if(m.type==="input"){if(!c.hasInputTriggerParamsSchema)H.push({severity:"error",message:`Input trigger entrypoint "${m.entrypoint}" must have params: InputTriggerParamsSchema (imported from @dev-agents/sdk-server)`,file:c.file,line:c.paramsLine||c.line,column:c.paramsColumn||c.column,suggestion:'Import InputTriggerParamsSchema from "@dev-agents/sdk-server" and set params to InputTriggerParamsSchema'})}else if(m.type==="email"){if(!c.hasEmailTriggerParamsSchema)H.push({severity:"error",message:`Email trigger entrypoint "${m.entrypoint}" must have params: EmailTriggerParamsSchema (imported from @dev-agents/sdk-server)`,file:c.file,line:c.paramsLine||c.line,column:c.paramsColumn||c.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 $v4(Z){let Y=Z;for(let H=0;H<10;H++)if(Y=Is(Y,".."),pU2(Y))return Y;return null}function pU2(Z){let Y=Is(Z,"agent.yaml"),H=Is(Z,"agent.yml");if(Ad1(Y))return Y;if(Ad1(H))return H;return null}function Zv4(Z){let Y=_U2(Z,"utf8"),H=xU2.default.parse(Y);if(!H||!H.triggers||!Array.isArray(H.triggers))return[];let G=[],N=Y.split(`
|
|
750
750
|
`);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,c=F.entrypoint?`entrypoint: ${F.entrypoint}`:`type: ${C}`;for(let Q1=0;Q1<N.length;Q1++)if(N[Q1]?.includes(c)){m=Q1+1;break}G.push({type:C,entrypoint:_,line:m})}return G}function Xv4(Z){let Y=new Map;function H(G){try{let N=Dv4(G,{withFileTypes:!0});for(let F of N){let C=Is(G,F.name);if(F.isDirectory())H(C);else if(F.name.endsWith(".ts")||F.name.endsWith(".tsx")){let _=_U2(C,"utf8"),m=Qv4(C,_);for(let[c,Q1]of m)Y.set(c,Q1)}}}catch(N){}}return H(Z),Y}function Qv4(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(A1){if(bQ.default.isImportDeclaration(A1))c(A1);if(bQ.default.isVariableStatement(A1))Q1(A1);bQ.default.forEachChild(A1,m)}function c(A1){let U1=A1.moduleSpecifier;if(!bQ.default.isStringLiteral(U1))return;let w2=U1.text,P2=w2.includes("@dev-agents/sdk-shared")||w2.includes("sdk/shared")||w2.includes("sdk-shared"),h2=w2.includes("@dev-agents/sdk-server")||w2.includes("sdk/server")||w2.includes("sdk-server"),T4=A1.importClause?.namedBindings;if(!T4)return;if(bQ.default.isNamedImports(T4))for(let Q6 of T4.elements){let P6=Q6.propertyName?.text||Q6.name.text,r2=Q6.name.text;if(P2&&P6==="Type")N.set(r2,!0);if(h2&&P6==="InputTriggerParamsSchema")F.set(r2,!0);if(h2&&P6==="EmailTriggerParamsSchema")C.set(r2,!0);if(h2&&P6==="WebhookTriggerParamsSchema")_.set(r2,!0)}}function Q1(A1){if(!A1.modifiers?.some((w2)=>w2.kind===bQ.default.SyntaxKind.ExportKeyword))return;for(let w2 of A1.declarationList.declarations){if(!bQ.default.isIdentifier(w2.name))continue;let P2=w2.name.text;if(!w2.initializer||!bQ.default.isCallExpression(w2.initializer))continue;let h2=w2.initializer;if(!bQ.default.isIdentifier(h2.expression))continue;let T4=h2.expression.text;if(T4!=="serverFunction"&&T4!=="backgroundFunction")continue;if(h2.arguments.length===0)continue;let Q6=h2.arguments[0];if(!Q6||!bQ.default.isObjectLiteralExpression(Q6))continue;let P6=!1,r2=!1,C4=!1,s0=!1,I6,R8;for(let D0 of Q6.properties)if(bQ.default.isPropertyAssignment(D0)&&bQ.default.isIdentifier(D0.name)){if(D0.name.text==="exported")P6=D0.initializer.kind===bQ.default.SyntaxKind.TrueKeyword;else if(D0.name.text==="params"){let _0=G.getLineAndCharacterOfPosition(D0.initializer.getStart(G));I6=_0.line+1,R8=_0.character+1,r2=V1(D0.initializer),C4=a(D0.initializer),s0=v1(D0.initializer)}}let D6=G.getLineAndCharacterOfPosition(w2.name.getStart(G));H.set(P2,{name:P2,exported:P6,hasEmptyTypeObject:r2,hasInputTriggerParamsSchema:C4,hasEmailTriggerParamsSchema:s0,file:Z,line:D6.line+1,column:D6.character+1,paramsLine:I6,paramsColumn:R8})}}function V1(A1){if(!bQ.default.isCallExpression(A1))return!1;if(bQ.default.isPropertyAccessExpression(A1.expression)){let U1=A1.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(A1.arguments.length===1){let h2=A1.arguments[0];if(h2&&bQ.default.isObjectLiteralExpression(h2)&&h2.properties.length===0)return!0}}}}return!1}function a(A1){if(bQ.default.isIdentifier(A1))return F.has(A1.text);return!1}function v1(A1){if(bQ.default.isIdentifier(A1))return C.has(A1.text);return!1}return m(G),H}var Hv4=[Kd1,Bd1,Od1,Md1,Rd1,Pd1];async function zv4(Z){try{let Y=Cd1(Z,"node_modules","@dev-agents","sdk-shared","dist","index.js");if(!fU2(Y))return console.warn(`Warning: Could not load validators from @dev-agents/sdk-shared: ${Y} does not exist`),[];let G=await import(Wv4(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 mZ1(Z,Y){let H=Y??[...Hv4,...await zv4(Z)],G=[],N=Cd1(Z,"src");if(!fU2(N))return{issues:[],hasErrors:!1,hasWarnings:!1};function F(m){try{let c=Jv4(m,{withFileTypes:!0});for(let Q1 of c){let V1=Cd1(m,Q1.name);if(Q1.isDirectory())F(V1);else if(Q1.name.endsWith(".ts")||Q1.name.endsWith(".tsx")){let a=Yv4(V1,"utf8");for(let v1 of H){let A1=v1.validate(V1,a);G.push(...A1)}}}}catch(c){console.warn(`Warning: Could not read directory ${m}: ${c instanceof Error?c.message:String(c)}`)}}F(N);let C=G.some((m)=>m.severity==="error"),_=G.some((m)=>m.severity==="warning");return{issues:G,hasErrors:C,hasWarnings:_}}function Ts(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(`
|