@evolvingmachines/evolve 0.0.65 → 0.0.66

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.
Files changed (152) hide show
  1. package/dist/{chunk-DK2MGUPB.js → chunk-RFLMRPGK.js} +5 -5
  2. package/dist/cli/index.cjs +39 -39
  3. package/dist/cli/index.d.cts +3 -3
  4. package/dist/cli/index.d.ts +3 -3
  5. package/dist/cli/index.js +30 -30
  6. package/dist/index.cjs +1 -1
  7. package/dist/index.d.cts +4 -4
  8. package/dist/index.d.ts +4 -4
  9. package/dist/index.js +1 -1
  10. package/dist/{types-B_qmzlMk.d.cts → types-84M4J_Vm.d.cts} +11 -44
  11. package/dist/{types-B_qmzlMk.d.ts → types-84M4J_Vm.d.ts} +11 -44
  12. package/package.json +4 -4
  13. package/skills/create-adapter/SKILL.md +71 -26
  14. package/skills/create-task/SKILL.md +124 -66
  15. package/skills/evolve/SKILL.md +37 -20
  16. package/skills/evolve-evals/SKILL.md +142 -69
  17. package/skills/evolve-evals/references/cli-reference/agent.md +76 -0
  18. package/skills/evolve-evals/references/cli-reference/analysis.md +78 -0
  19. package/skills/evolve-evals/references/cli-reference/analyze.md +95 -0
  20. package/skills/evolve-evals/references/cli-reference/auth.md +96 -0
  21. package/skills/evolve-evals/references/cli-reference/check.md +156 -0
  22. package/skills/evolve-evals/references/cli-reference/dataset.md +154 -0
  23. package/skills/evolve-evals/references/cli-reference/filesystem.md +168 -0
  24. package/skills/evolve-evals/references/cli-reference/index.md +149 -0
  25. package/skills/evolve-evals/references/cli-reference/job.md +198 -0
  26. package/skills/evolve-evals/references/cli-reference/run.md +187 -0
  27. package/skills/evolve-evals/references/cli-reference/secrets.md +77 -0
  28. package/skills/evolve-evals/references/cli-reference/session.md +56 -0
  29. package/skills/evolve-evals/references/cli-reference/skill.md +52 -0
  30. package/skills/evolve-evals/references/cli-reference/skills.md +85 -0
  31. package/skills/evolve-evals/references/cli-reference/trial.md +115 -0
  32. package/skills/evolve-evals/references/cli-reference/upload.md +72 -0
  33. package/skills/evolve-evals/references/core-concepts/agents.md +96 -0
  34. package/skills/evolve-evals/references/core-concepts/analyze.md +143 -0
  35. package/skills/evolve-evals/references/core-concepts/check.md +116 -0
  36. package/skills/evolve-evals/references/core-concepts/compatibility.md +39 -0
  37. package/skills/evolve-evals/references/core-concepts/compose.md +103 -0
  38. package/skills/evolve-evals/references/core-concepts/datasets.md +234 -0
  39. package/skills/evolve-evals/references/core-concepts/index.md +52 -0
  40. package/skills/evolve-evals/references/core-concepts/jobs.md +223 -0
  41. package/skills/evolve-evals/references/core-concepts/models.md +73 -0
  42. package/skills/evolve-evals/references/core-concepts/multi-step.md +93 -0
  43. package/skills/evolve-evals/references/core-concepts/rewardkit.md +341 -0
  44. package/skills/evolve-evals/references/core-concepts/sandboxes.md +73 -0
  45. package/skills/evolve-evals/references/core-concepts/secrets.md +86 -0
  46. package/skills/evolve-evals/references/core-concepts/sharing.md +81 -0
  47. package/skills/evolve-evals/references/core-concepts/skills.md +100 -0
  48. package/skills/evolve-evals/references/core-concepts/task-config.md +169 -0
  49. package/skills/evolve-evals/references/core-concepts/task-environment.md +127 -0
  50. package/skills/evolve-evals/references/core-concepts/task-reference.md +191 -0
  51. package/skills/evolve-evals/references/core-concepts/task-verifiers.md +209 -0
  52. package/skills/evolve-evals/references/core-concepts/tasks.md +90 -0
  53. package/skills/evolve-evals/references/core-concepts/teams.md +128 -0
  54. package/skills/evolve-evals/references/core-concepts/trial-outputs.md +225 -0
  55. package/skills/evolve-evals/references/core-concepts/trials.md +129 -0
  56. package/skills/evolve-evals/references/core-concepts/upload-sdk-session.md +240 -0
  57. package/skills/evolve-evals/references/core-concepts/upload.md +166 -0
  58. package/skills/evolve-evals/references/dashboard/checks.md +54 -0
  59. package/skills/evolve-evals/references/dashboard/datasets.md +65 -0
  60. package/skills/evolve-evals/references/dashboard/jobs.md +106 -0
  61. package/skills/evolve-evals/references/dashboard/traces.md +54 -0
  62. package/skills/evolve-evals/references/dashboard/trial-viewer.md +77 -0
  63. package/skills/evolve-evals/references/getting-started/first-task.md +228 -0
  64. package/skills/evolve-evals/references/getting-started/installation.md +79 -0
  65. package/skills/evolve-evals/references/getting-started/quick-start.md +100 -0
  66. package/skills/evolve-evals/references/index.md +58 -0
  67. package/skills/evolve-evals/references/sdk/http.md +110 -0
  68. package/skills/evolve-evals/references/sdk/python.md +108 -0
  69. package/skills/evolve-evals/references/sdk/typescript.md +104 -0
  70. package/skills/evolve-evals/references/sdk-reference/agents.md +75 -0
  71. package/skills/evolve-evals/references/sdk-reference/analyses.md +124 -0
  72. package/skills/evolve-evals/references/sdk-reference/auth.md +171 -0
  73. package/skills/evolve-evals/references/sdk-reference/checks.md +145 -0
  74. package/skills/evolve-evals/references/sdk-reference/datasets.md +170 -0
  75. package/skills/evolve-evals/references/sdk-reference/error-codes.md +231 -0
  76. package/skills/evolve-evals/references/sdk-reference/errors.md +98 -0
  77. package/skills/evolve-evals/references/sdk-reference/filesystem.md +166 -0
  78. package/skills/evolve-evals/references/sdk-reference/index.md +161 -0
  79. package/skills/evolve-evals/references/sdk-reference/jobs.md +250 -0
  80. package/skills/evolve-evals/references/sdk-reference/meta.md +54 -0
  81. package/skills/evolve-evals/references/sdk-reference/methods/agents.md +154 -0
  82. package/skills/evolve-evals/references/sdk-reference/methods/analyses.md +211 -0
  83. package/skills/evolve-evals/references/sdk-reference/methods/auth.md +257 -0
  84. package/skills/evolve-evals/references/sdk-reference/methods/checks.md +460 -0
  85. package/skills/evolve-evals/references/sdk-reference/methods/datasets.md +687 -0
  86. package/skills/evolve-evals/references/sdk-reference/methods/filesystem.md +527 -0
  87. package/skills/evolve-evals/references/sdk-reference/methods/jobs.md +1021 -0
  88. package/skills/evolve-evals/references/sdk-reference/methods/meta.md +209 -0
  89. package/skills/evolve-evals/references/sdk-reference/methods/secrets.md +157 -0
  90. package/skills/evolve-evals/references/sdk-reference/methods/skills.md +125 -0
  91. package/skills/evolve-evals/references/sdk-reference/methods/trials.md +371 -0
  92. package/skills/evolve-evals/references/sdk-reference/secrets.md +104 -0
  93. package/skills/evolve-evals/references/sdk-reference/skills.md +66 -0
  94. package/skills/evolve-evals/references/sdk-reference/trials.md +164 -0
  95. package/skills/evolve-evals/references/sdk-reference/types.md +1249 -0
  96. package/skills/publish/SKILL.md +103 -79
  97. package/skills/rewardkit/SKILL.md +78 -23
  98. package/spec/openapi.yaml +19 -74
  99. package/skills/evolve-evals/references/cli-reference/agent.mdx +0 -79
  100. package/skills/evolve-evals/references/cli-reference/analysis.mdx +0 -160
  101. package/skills/evolve-evals/references/cli-reference/analyze.mdx +0 -84
  102. package/skills/evolve-evals/references/cli-reference/auth.mdx +0 -133
  103. package/skills/evolve-evals/references/cli-reference/check.mdx +0 -263
  104. package/skills/evolve-evals/references/cli-reference/dataset.mdx +0 -151
  105. package/skills/evolve-evals/references/cli-reference/index.mdx +0 -108
  106. package/skills/evolve-evals/references/cli-reference/job.mdx +0 -278
  107. package/skills/evolve-evals/references/cli-reference/run.mdx +0 -204
  108. package/skills/evolve-evals/references/cli-reference/secrets.mdx +0 -95
  109. package/skills/evolve-evals/references/cli-reference/skill.mdx +0 -61
  110. package/skills/evolve-evals/references/cli-reference/skills.mdx +0 -81
  111. package/skills/evolve-evals/references/cli-reference/trial.mdx +0 -181
  112. package/skills/evolve-evals/references/cli-reference/upload.mdx +0 -36
  113. package/skills/evolve-evals/references/core-concepts/agents.mdx +0 -106
  114. package/skills/evolve-evals/references/core-concepts/analyze.mdx +0 -86
  115. package/skills/evolve-evals/references/core-concepts/check.mdx +0 -64
  116. package/skills/evolve-evals/references/core-concepts/datasets.mdx +0 -138
  117. package/skills/evolve-evals/references/core-concepts/index.mdx +0 -42
  118. package/skills/evolve-evals/references/core-concepts/jobs.mdx +0 -151
  119. package/skills/evolve-evals/references/core-concepts/models.mdx +0 -68
  120. package/skills/evolve-evals/references/core-concepts/sandboxes.mdx +0 -52
  121. package/skills/evolve-evals/references/core-concepts/secrets.mdx +0 -41
  122. package/skills/evolve-evals/references/core-concepts/sharing.mdx +0 -35
  123. package/skills/evolve-evals/references/core-concepts/skills.mdx +0 -42
  124. package/skills/evolve-evals/references/core-concepts/tasks.mdx +0 -216
  125. package/skills/evolve-evals/references/core-concepts/teams.mdx +0 -36
  126. package/skills/evolve-evals/references/core-concepts/trial-outputs.mdx +0 -117
  127. package/skills/evolve-evals/references/core-concepts/trials.mdx +0 -103
  128. package/skills/evolve-evals/references/core-concepts/upload.mdx +0 -93
  129. package/skills/evolve-evals/references/dashboard/checks.mdx +0 -21
  130. package/skills/evolve-evals/references/dashboard/datasets.mdx +0 -24
  131. package/skills/evolve-evals/references/dashboard/jobs.mdx +0 -65
  132. package/skills/evolve-evals/references/dashboard/traces.mdx +0 -17
  133. package/skills/evolve-evals/references/dashboard/trial-viewer.mdx +0 -30
  134. package/skills/evolve-evals/references/getting-started/installation.mdx +0 -56
  135. package/skills/evolve-evals/references/getting-started/quick-start.mdx +0 -94
  136. package/skills/evolve-evals/references/index.mdx +0 -48
  137. package/skills/evolve-evals/references/sdk/python.mdx +0 -161
  138. package/skills/evolve-evals/references/sdk/typescript.mdx +0 -163
  139. package/skills/evolve-evals/references/sdk-reference/agents.mdx +0 -108
  140. package/skills/evolve-evals/references/sdk-reference/analyses.mdx +0 -222
  141. package/skills/evolve-evals/references/sdk-reference/auth.mdx +0 -116
  142. package/skills/evolve-evals/references/sdk-reference/checks.mdx +0 -300
  143. package/skills/evolve-evals/references/sdk-reference/datasets.mdx +0 -346
  144. package/skills/evolve-evals/references/sdk-reference/errors.mdx +0 -210
  145. package/skills/evolve-evals/references/sdk-reference/index.mdx +0 -60
  146. package/skills/evolve-evals/references/sdk-reference/jobs.mdx +0 -822
  147. package/skills/evolve-evals/references/sdk-reference/meta.mdx +0 -52
  148. package/skills/evolve-evals/references/sdk-reference/skills.mdx +0 -69
  149. package/skills/evolve-evals/references/sdk-reference/trials.mdx +0 -302
  150. package/skills/evolve-evals/references/sdk-reference/types.mdx +0 -274
  151. package/skills/evolve-evals/references/snippets/global-options.mdx +0 -13
  152. package/skills/evolve-evals/references/snippets/list-flags.mdx +0 -23
package/dist/index.cjs CHANGED
@@ -229,7 +229,7 @@ ${n}`)}function nu(t,e){switch(t){case "droid":{let n=$e(e,"marketplace",t),r=$e
229
229
 
230
230
  `))!==-1;){let a=e.slice(0,s);e=e.slice(s+2);let d,u,c=[];for(let i of a.split(`
231
231
  `)){if(!i||i.startsWith(":"))continue;let o=i.indexOf(":"),l=o===-1?i:i.slice(0,o),p=o===-1?"":i.slice(o+1);p.startsWith(" ")&&(p=p.slice(1)),l==="id"?d=p:l==="event"?u=p:l==="data"&&c.push(p);}(d!==void 0||u!==void 0||c.length>0)&&t({id:d,event:u,data:c.join(`
232
- `)});}}}}async function*Aa(t,e,n){let r=await k(t,e,{headers:{Accept:"text/event-stream",...n?.lastEventId!==void 0?{"Last-Event-ID":n.lastEventId}:{}},signal:n?.signal});if(!r.body)throw new Error("Event stream response has no body");let s=[],a=Ba(c=>{s.push({event:c.event||"message",...c.id!==void 0?{id:c.id}:{},data:c.data?el(c.data):{}});}),d=r.body.getReader(),u=new TextDecoder;try{for(;;){let{done:c,value:i}=await d.read();if(c)break;for(a.push(u.decode(i,{stream:!0}));s.length>0;)yield s.shift();}}finally{d.cancel().catch(()=>{});}}function be(t){let e=new URLSearchParams;for(let[r,s]of Object.entries(t))s!==void 0&&e.set(r,String(s));let n=e.toString();return n?`?${n}`:""}function Na(t){return t.split("/").filter(Boolean).map(encodeURIComponent).join("/")}function As(t,e){return {async status(){return await(await k(t,`${e}/filesystem`)).json()},async list(n){return await(await k(t,`${e}/filesystem/files${be({path:n?.path,source:n?.source,cursor:n?.cursor,limit:n?.limit})}`)).json()},async read(n,r){let s=Ps(r?.range),a=await k(t,`${e}/filesystem/files/${Na(n)}${be({source:r?.source})}`,s?{headers:{Range:s}}:void 0);return Buffer.from(await a.arrayBuffer())},async search(n){return await(await k(t,`${e}/filesystem/search${be({q:n.q,path:n.path,regex:n.regex,limit:n.limit,source:n.source})}`)).json()},async changes(n){return await(await k(t,`${e}/filesystem/changes${be({source:n?.source,phase:n?.phase,cursor:n?.cursor,limit:n?.limit})}`)).json()},archive:(async n=>Mn(t,`${e}/filesystem/archive${be({path:n?.path,source:n?.source})}`,n,"filesystem.tar.gz")),async watch(n){return await(await k(t,`${e}/filesystem/watch`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({paths:n})})).json()},events(n){return Aa(t,`${e}/filesystem/events`,n)},async logs(n){return await(await k(t,`${e}/logs${be({stream:n.stream,cursor:n.cursor,limit:n.limit})}`)).json()},logEvents(n){return Aa(t,`${e}/logs/events`,n)},async procs(){return await(await k(t,`${e}/procs`)).json()}}}function yp(t,e){return {async status(){return await(await k(t,`${e}/filesystem`)).json()},async list(n){return await(await k(t,`${e}/filesystem/files${be({path:n?.path,cursor:n?.cursor,limit:n?.limit})}`)).json()},async read(n,r){let s=Ps(r?.range),a=await k(t,`${e}/filesystem/files/${Na(n)}`,s?{headers:{Range:s}}:void 0);return Buffer.from(await a.arrayBuffer())}}}function ne(t,e){let n,r=()=>n??=t({limit:e?.limit,cursor:e?.cursor});return {then(s,a){return r().then(s,a)},catch(s){return r().catch(s)},finally(s){return r().finally(s)},async*[Symbol.asyncIterator](){let s=e?.cursor;for(;;){let a=await t({limit:e?.limit,cursor:s});for(let d of a.items)yield d;if(!a.nextCursor)return;s=a.nextCursor;}}}}function _e(t){let e=new FormData;for(let[n,r]of Object.entries(t))r!==void 0&&e.set(n,r);return e}async function bp(t){let{readFileSync:e,readdirSync:n,statSync:r}=await import('fs'),{basename:s,join:a,resolve:d}=await import('path'),u=d(t),c=g=>r(g,{throwIfNoEntry:false})?.isFile()===true,i=g=>r(g,{throwIfNoEntry:false})?.isDirectory()===true;if(!i(u))throw new Error(`datasets().preflight(): not a directory: ${u}`);let o=[],l=u;if(c(a(u,"task.toml"))){let g=n(u,{withFileTypes:true}).filter(m=>m.isDirectory()&&!m.name.startsWith(".")).filter(m=>c(a(u,m.name,"task.toml"))).map(m=>m.name);if(i(a(u,"tasks"))||g.length>0)throw new Error(`${u} is ambiguous: it carries task.toml at its root (a single-task shape) AND corpus-shaped content \u2014 the import refuses this too; point at the one task directory or at a corpus of task directories, not a mix`);o.push({name:s(u),dir:u});}else {l=i(a(u,"tasks"))?a(u,"tasks"):u;for(let g of n(l,{withFileTypes:true})){if(!g.isDirectory()||g.name.startsWith("."))continue;let m=a(l,g.name);if(!c(a(m,"task.toml")))throw new Error(`${m} has no task.toml \u2014 every directory of a corpus must be a task directory (the import fails on it rather than skipping it)`);o.push({name:g.name,dir:m});}if(o.length===0)throw new Error(`${l} holds no task directories \u2014 nothing to check`);o.sort((g,m)=>g.name<m.name?-1:g.name>m.name?1:0);}let p=(l===u?[u]:[l,u]).map(g=>a(g,"dataset.toml")).find(c);return {tasks:o.map(({name:g,dir:m})=>({name:g,task_toml:e(a(m,"task.toml"),"utf8")})),...p!==void 0?{dataset_toml:e(p,"utf8")}:{}}}async function _p(t,e,n){let{postMultipartFile:r}=await Promise.resolve().then(()=>(Ss(),Ta)),s=await r({url:`${t.baseUrl}${e}`,method:n.method??"POST",headers:{Authorization:`Bearer ${t.apiKey}`},fields:n.fields,file:n.file,...n.onBytes!==void 0?{onBytes:n.onBytes}:{}});return s.ok||await Tt(s),s}async function ja(t,e,n,r){if(r.resumableThreshold!==void 0){let{stat:s}=await import('fs/promises'),{size:a}=await s(n);if(a>r.resumableThreshold){let{uploadArchiveResumable:d}=await Promise.resolve().then(()=>(gs(),ca)),u=await d({baseUrl:t.baseUrl,headers:{Authorization:`Bearer ${t.apiKey}`},file:{path:n},fields:r.fields,...r.resumablePath!==void 0?{sessionsPath:r.resumablePath}:{},...r.onBytes!==void 0?{onBytes:r.onBytes}:{},...r.onRegistered!==void 0?{onRegistered:r.onRegistered}:{}});return u.ok||await Tt(u),u}}return await _p(t,e,{method:r.method,fields:r.fields,file:{path:n,filename:r.filename},...r.onBytes!==void 0?{onBytes:r.onBytes}:{}})}async function Je(t,e,n){let{tarGzipDirectoryToFile:r}=await Promise.resolve().then(()=>(wr(),_r)),{mkdtemp:s,rm:a}=await import('fs/promises'),{tmpdir:d}=await import('os'),{join:u}=await import('path'),c=await s(u(d(),"evolve-upload-"));try{let i=u(c,n.filename);return await r(n.directory,i),await ja(t,e,i,n)}finally{await a(c,{recursive:true,force:true});}}function wp(t){let e,n=()=>(e||(e=(async()=>{let r=await t.next();for(;!r.done;)r=await t.next();return r.value})()),e);return {then(r,s){return n().then(r,s)},catch(r){return n().catch(r)},finally(r){return n().finally(r)},[Symbol.asyncIterator](){return t}}}var Ja="x-package-sha256",Rt=class extends Error{constructor(n,r){super(`downloaded bytes do not match the digest the server stated (expected ${n}, got ${r})`);this.expected=n;this.actual=r;}name="EvolveDigestMismatchError"},Et=class extends Error{constructor(n,r){super(`download ended early: the server declared ${n} bytes and ${r} arrived`);this.expectedBytes=n;this.receivedBytes=r;}name="EvolveIncompleteDownloadError"};function Ka(t,e){let n=t.headers.get("Content-Length");if(n===null)return;let r=Number(n);if(Number.isFinite(r)&&e!==r)throw new Et(r,e)}async function Va(t,e){let n=t.headers.get(Ja);if(!n)return;let{createHash:r}=await import('crypto'),s=r("sha256").update(e).digest("hex");if(s!==n)throw new Rt(n,s)}function kp(t,e){let r=(t.headers.get("Content-Disposition")||"").match(/filename="([^"]+)"/);if(!r)return e;let s=Z.basename(r[1]);return s===""||s==="."||s===".."||/[/\\]/.test(s)||/[\u0000-\u001f]/.test(s)?e:s}async function Ga(t,e,n){if(!t.body)throw new Error("Download response has no body");await promises.mkdir(e,{recursive:true});let r=Z.join(e,kp(t,n)),{createHash:s,randomBytes:a}=await import('crypto'),d=`${r}.${a(8).toString("hex")}.part`,u=s("sha256"),c=0,i=stream.Readable.fromWeb(t.body);i.on("data",o=>{u.update(o),c+=o.length;});try{await promises$1.pipeline(i,ee.createWriteStream(d));let o=t.headers.get("Content-Length");if(o!==null&&c!==Number(o))throw new Et(Number(o),c);let l=t.headers.get(Ja),p=u.digest("hex");if(l&&p!==l)throw new Rt(l,p);await promises.rename(d,r);}catch(o){throw await promises.rm(d,{force:true}).catch(()=>{}),o}return r}async function Mn(t,e,n,r){let s=await k(t,e);if(n?.stream){if(!s.body)throw new Error("Download response has no body");return s.body}if(n?.to)return Ga(s,n.to,r);let a=Buffer.from(await s.arrayBuffer());return Ka(s,a.length),await Va(s,a),a}function qa(t){let e=pe("datasets",t);async function n(i){let o=await k(e,`/api/datasets/imports/${encodeURIComponent(i)}`);return je(await o.json())}function r(i){if(!i||typeof i!="object")return null;let o=i;return {git_url:o.git_url??null,ref:o.ref,current_commit:o.current_commit,path:o.path??null,latest_commit:o.latest_commit??null,acked_commit:o.acked_commit??null,moved:o.moved===true,behind_by:typeof o.behind_by=="number"?o.behind_by:null,checked_at:o.checked_at??null,error:o.error??null,auto_import:o.auto_import===true}}function s(i){return {name:i.name,title:i.title??null,description:i.description??null,active_version:i.active_version?Ne(i.active_version):null,latest_version:i.latest_version?Ne(i.latest_version):null,versions:(i.versions||[]).map(Ne),selected_version:i.selected_version?Ne(i.selected_version):null,tasks:F(i.tasks,ep),failed_tasks:Zu(i.failed_tasks),upstream:r(i.upstream),created_at:i.created_at,updated_at:i.updated_at}}async function a(i,o){let l=En(i),p=z(o,{version:l.version}),g=await k(e,`/api/datasets/${encodeURIComponent(l.name)}${p}`);return s(await g.json())}async function d(i,o){let l=o?.pollIntervalMs??Ct,p=o?.settleTimeoutMs??Yu,g=Date.now()+p,m=`${i.name}@${i.version}`,h=null,f=null,y=()=>f?.state==="FAILED"?new xt("settle_timeout",`Import ${i.id}'s dataset "${i.name}" version "${i.version}" settled FAILED, but the final import read kept answering rate-limited/unavailable past the ${p}ms settle budget. Read the failure with datasets().getImport("${i.id}").`,{importId:i.id,dataset:i.name,version:i.version,state:f.state}):new xt("settle_timeout",`Import ${i.id} completed, but dataset "${i.name}" version "${i.version}" did not settle within ${p}ms: last observed state ${f?.state??"never observed"}. Keep following with datasets().get("${m}").`,{importId:i.id,dataset:i.name,version:i.version,state:f?.state??null}),b=async _=>{for(;;){fe(o?.signal);try{return await _()}catch(w){if(!(w instanceof L)||w.status!==429&&w.status!==503)throw w;let S=g-Date.now();if(S<=0)throw y();await J(Math.min(Math.max((w.retryAfterSec??0)*1e3,l),S),o?.signal);}}};for(;;){fe(o?.signal);let _=await b(()=>a(m,{limit:1})),w=_.selected_version;if(w){if(f=w,w.state!==h&&(h=w.state,o?.onVersion?.(w,_)),w.state==="FAILED")return b(()=>n(i.id));if(w.state==="READY"||w.state==="ARCHIVED")return i}if(Date.now()>=g)throw y();await J(l,o?.signal);}}function u(i){return {name:i.name,title:i.title??null,description:i.description??null,active_version:i.active_version?Ne(i.active_version):null,latest_version:i.latest_version?Ne(i.latest_version):null,upstream:r(i.upstream)}}async function c(i){let o=await k(e,`/api/datasets${z(i,{search:i?.search})}`);return F(await o.json(),u)}return {list(i){return ne(o=>c({...o,search:i?.search}),i)},get:a,async getActive(i,o){let l=await a(i,o);if(l.active_version===null)throw new In(i);return {name:l.name,title:l.title,description:l.description,active_version:l.active_version,version:l.active_version.version,tasks:l.tasks??{items:[],nextCursor:null,hasMore:false},versions:l.versions??[],created_at:l.created_at,updated_at:l.updated_at}},async getTaskBuild(i,o){let l=En(i);if(l.version===void 0)throw new Error(`datasets().getTaskBuild() needs "name@version" \u2014 a task's build outcome belongs to one immutable version (got "${i}")`);let g=await(await k(e,`/api/datasets/${encodeURIComponent(l.name)}/versions/${encodeURIComponent(l.version)}/tasks/${encodeURIComponent(o)}/build`)).json();return {task_name:g.task_name??o,state:g.state,failure:g.failure&&typeof g.failure=="object"?Ma(g.failure):null,build_log_ref:g.build_log_ref??null}},async preflight(i){let o=i?.source?.directory;if(typeof o!="string"||o==="")throw new Error("datasets().preflight() requires { source: { directory } } \u2014 a local corpus directory whose task.toml files are checked server-side before any upload");let l=await bp(o);return await(await k(e,"/api/datasets/preflight",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(l)})).json()},async publish(i,o){let l=i.source,p=i.org??e.org;if(l?.directory){if(i.name===void 0||i.version===void 0){let{existsSync:m}=await import('fs'),{join:h}=await import('path');if(!(m(h(l.directory,"dataset.toml"))||m(h(l.directory,"tasks","dataset.toml"))))throw new Error(`datasets().publish() needs ${i.name===void 0?"a name":"a version"} \u2014 pass it explicitly, or add a dataset.toml manifest to the corpus directory (the server then derives name and version from it)`)}let g=await Je(e,"/api/datasets/publish",{fields:{name:i.name,version:i.version,org:p},directory:l.directory,filename:"corpus.tar.gz",...o?.onUploadProgress!==void 0?{onBytes:o.onUploadProgress}:{},...o?.onRegistered!==void 0?{onRegistered:o.onRegistered}:{},resumableThreshold:_t});return je(await g.json())}if(l&&"archive_url"in l&&l.archive_url){if(i.name===void 0||i.version===void 0)throw new Error("datasets().publish() requires name and version for an archive_url source \u2014 the server fetches the tarball only after the publish is accepted, so a manifest cannot supply them");let g=await k(e,"/api/datasets/publish",{method:"POST",body:_e({name:i.name,version:i.version,archive_url:l.archive_url,org:p})});return je(await g.json())}if(l&&"hub_package"in l&&l.hub_package){let g=await k(e,"/api/datasets/publish",{method:"POST",body:_e({...i.name!==void 0?{name:i.name}:{},...i.version!==void 0?{version:i.version}:{},hub_package:l.hub_package,org:p})});return je(await g.json())}if(l&&"git_url"in l&&l.git_url){if(i.name===void 0||i.version===void 0)throw new Error("datasets().publish() requires name and version for a git source \u2014 a dataset.toml manifest can only supply them for a directory source, because a git repository is cloned server-side after the publish is accepted");let g=await k(e,"/api/datasets/publish",{method:"POST",body:_e({name:i.name,version:i.version,git_url:l.git_url,git_ref:l.git_ref,...l.git_path!==void 0?{git_path:l.git_path}:{},org:p})});return je(await g.json())}throw new Error("datasets().publish() requires a source: a git source ({ source: { git_url, git_ref } }), a local corpus directory ({ source: { directory } }), a public tarball url ({ source: { archive_url } }), or a Harbor hub package ({ source: { hub_package } }); plus name and version (optional for a directory whose corpus carries a dataset.toml manifest, and for a hub package, which supplies its own defaults)")},getImport:n,async watchImport(i,o){let l=o?.pollIntervalMs??Ct,p=null,g=null;for(;;){fe(o?.signal);let m;try{m=await n(i);}catch(f){if(f instanceof L&&(f.status===429||f.status===503)){await J(Math.max((f.retryAfterSec??0)*1e3,l),o?.signal);continue}throw f}let h=`${m.status}${m.receiving===true?":receiving":""}`;if(h!==p&&(p=h,o?.onStatus?.(m)),m.progress!==null){let f=JSON.stringify(m.progress);f!==g&&(g=f,o?.onProgress?.(m.progress,m));}if(m.status==="FAILED")return m;if(m.status==="COMPLETED")return d(m,o);await J(l,o?.signal);}},download:(async(i,o)=>{let l=En(i),p=l.version?`?version=${encodeURIComponent(l.version)}`:"",g=await k(e,`/api/datasets/${encodeURIComponent(l.name)}/download${p}`);if(o?.stream){if(!g.body)throw new Error("Package response has no body");return g.body}if(o?.to)return Ga(g,o.to,`${l.name}-corpus.tar.gz`);let m=Buffer.from(await g.arrayBuffer());return Ka(g,m.length),await Va(g,m),m}),listImports(i){return ne(async o=>{let l=new URLSearchParams;o.limit!==void 0&&l.set("limit",String(o.limit)),o.cursor!==void 0&&l.set("cursor",o.cursor),i?.status!==void 0&&l.set("status",i.status),i?.dataset!==void 0&&l.set("dataset",i.dataset);let p=l.toString()?`?${l}`:"",g=await k(e,`/api/datasets/imports${p}`);return F(await g.json(),je)},i)},async activate(i,o){let l=await k(e,`/api/datasets/${encodeURIComponent(i)}/versions/${encodeURIComponent(o)}/activate`,{method:"POST"});return s(await l.json())},async update(i,o){let l=await k(e,`/api/datasets/${encodeURIComponent(i)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});return u(await l.json())},async delete(i){await k(e,`/api/datasets/${encodeURIComponent(i)}`,{method:"DELETE"});},taskFiles(i,o){let l=En(i);if(l.version===void 0)throw new Error(`datasets().taskFiles() needs "name@version" \u2014 a task's files belong to one immutable version (got "${i}")`);return yp(e,`/api/datasets/${encodeURIComponent(l.name)}/versions/${encodeURIComponent(l.version)}/tasks/${encodeURIComponent(o)}`)}}}function za(t){let e=pe("agents",t);return {async create(n){let r=Ia("agents().create()",{...n,org:n.org??e.org}),s=r.directory?await Je(e,"/api/agents",{fields:r.fields,directory:r.directory,filename:"source.tar.gz"}):await k(e,"/api/agents",{method:"POST",body:_e(r.fields)});return Tn(await s.json())},list(n){return ne(async r=>{let s=await k(e,`/api/agents${z(r,{scope:n?.scope})}`);return F(await s.json(),Tn)},n)},async get(n){let r=await k(e,`/api/agents/${encodeURIComponent(n)}`);return Tn(await r.json())},async delete(n){await k(e,`/api/agents/${encodeURIComponent(n)}`,{method:"DELETE"});},async upsert(n,r){let s=Ia("agents().upsert()",{...r,name:n,org:r.org??e.org}),a=s.directory?await Je(e,`/api/agents/${encodeURIComponent(n)}`,{method:"PUT",fields:s.fields,directory:s.directory,filename:"source.tar.gz"}):await k(e,`/api/agents/${encodeURIComponent(n)}`,{method:"PUT",body:_e(s.fields)});return Tn(await a.json())}}}function Ia(t,e){let n=typeof e.install_script=="string",r=typeof e.directory=="string";if(n&&r)throw new Error(`${t} takes EITHER an install script ({ install_script }) or a local directory ({ directory }), not both`);if(!n&&!r)throw new Error(`${t} requires either an install script ({ install_script }) or a local directory ({ directory }), plus run_command`);let s={name:e.name,org:e.org,run_command:e.run_command,...e.env!==void 0?{env:JSON.stringify(e.env)}:{},...n?{install_script:e.install_script}:{}};return r?{fields:s,directory:e.directory}:{fields:s}}function xs(t){return {id:t.id,name:t.name,org:typeof t.org=="string"?t.org:null,digest:t.digest,size_bytes:t.size_bytes??0,description:t.description??null,ref:t.ref??`upload:${t.id}`,created_at:t.created_at}}function Ha(t){let e=pe("skills",t);return {async upload(n,r){if(typeof n!="string"||!n.trim())throw new Error("skills().upload() requires a local skill directory path");let{basename:s,resolve:a}=await import('path'),d=s(a(n)),c=await(await Je(e,"/api/skills",{fields:{name:d||void 0,org:r?.org??e.org},directory:n,filename:"skill.tar.gz"})).json();return (Array.isArray(c.skills)?c.skills:[c]).map(xs)},list(n){return ne(async r=>{let s=await k(e,`/api/skills${z(r,{scope:n?.scope})}`);return F(await s.json(),xs)},n)},async get(n){let s=await(await k(e,`/api/skills/${encodeURIComponent(n)}`)).json();return {...xs(s),skill_md:s.skill_md??null}},async delete(n){await k(e,`/api/skills/${encodeURIComponent(n)}`,{method:"DELETE"});}}}function Wa(t){let e=pe("jobs",t);async function n(i){let o=await k(e,`/api/jobs/${encodeURIComponent(i)}`);return te(await o.json())}async function r(i){let o=await k(e,`/api/jobs/imports/${encodeURIComponent(i)}`);return kt(await o.json())}function s(i){return i.kind!=="check"?te(i):{...i,kind:"check",visibility:i.visibility==="LINK"?"LINK":"PRIVATE",cost_usd:vt(i.cost_usd),finished_at:i.finished_at??null}}async function a(i){let o=await k(e,`/api/jobs${z(i,{search:i?.search,scope:i?.scope,kind:i?.kind})}`);return F(await o.json(),s)}function d(i){let o=i.trials??{};return {task_name:i.task_name,source:i.source,trials:{total:o.total??0,byStatus:o.byStatus??{}},mean_reward:i.mean_reward??null,cost_usd:i.cost_usd??null,check:i.check&&typeof i.check=="object"&&!Array.isArray(i.check)?i.check:null}}async function u(i,o){let l=z(o,{status:o?.status?.length?o.status.join(","):void 0,dataset:o?.dataset}),p=await k(e,`/api/jobs/${encodeURIComponent(i)}/trials${l}`);return F(await p.json(),Es)}async function*c(i,o){let{onEvent:l,signal:p}=o??{},g=o?.reconnectDelayMs??zu,m=o?.maxReconnectDelayMs??St,h=null,f=false,y=false,b=g;for(;!f;){fe(p);let _;try{_=await fetch(`${e.baseUrl}/api/jobs/${encodeURIComponent(i)}/events`,{headers:{Authorization:`Bearer ${e.apiKey}`,Accept:"text/event-stream",...h!==null?{"Last-Event-ID":String(h)}:{}},signal:p});}catch(E){if(Pa(E,p))throw E;await J(b,p),b=Math.min(b*2,m);continue}if(!_.ok){if(_.status===429||_.status>=500){let E=await _.text().catch(()=>""),A=yt(E,_)??0,$=A>0?Math.max(A*1e3,b):b;await J($,p),b=Math.min(b*2,m);continue}await Tt(_);}if(!_.body)throw new Error("Event stream response has no body");let w=false,S=[],v=Ba(E=>{let A=Number(E.id),$={seq:Number.isInteger(A)?A:-1,type:E.event||"message",data:E.data?el(E.data):{}};Number.isInteger(A)&&(h=A),w=true,Wu.has($.type)&&(f=true),S.push($);}),x=_.body.getReader(),R=new TextDecoder;try{for(;!f;){let{done:E,value:A}=await x.read();if(E)break;v.push(R.decode(A,{stream:!0}));for(let $ of S)l?.($),yield $;S.length=0;}}catch(E){if(Pa(E,p))throw E}finally{await x.cancel().catch(()=>{});}if(f)break;fe(p);let I=await n(i);if(Hu.has(I.status)){if(y)return I;y=true;continue}w&&(b=g),await J(b,p),b=Math.min(b*2,m);}return n(i)}return {async start(i,o){let l=i.org??e.org,p=l!==void 0?{...i,org:l}:i,g=await k(e,"/api/jobs",{method:"POST",headers:{"Content-Type":"application/json",...o?.idempotencyKey?{"Idempotency-Key":o.idempotencyKey}:{}},body:JSON.stringify(p)});return te(await g.json())},get:n,list(i){return ne(o=>a({...o,search:i?.search,scope:i?.scope,kind:i?.kind}),i)},trials(i,o){return ne(l=>u(i,{...l,status:o?.status,dataset:o?.dataset}),o)},tasks(i,o){return ne(async l=>{let p=await k(e,`/api/jobs/${encodeURIComponent(i)}/tasks${z(l)}`);return F(await p.json(),d)},o)},watch(i,o){return wp(c(i,o))},async cancel(i){let o=await k(e,`/api/jobs/${encodeURIComponent(i)}/cancel`,{method:"POST"});return te(await o.json())},async compare(i){let o=i.map(encodeURIComponent).join(","),p=await(await k(e,`/api/jobs/compare?ids=${o}`)).json();return {jobs:(p.jobs||[]).map(gp),taskMatrix:(p.taskMatrix||[]).map(fp)}},async resume(i,o,l){let p=await k(e,`/api/jobs/${encodeURIComponent(i)}/resume`,{method:"POST",headers:{"Content-Type":"application/json",...l?.idempotencyKey?{"Idempotency-Key":l.idempotencyKey}:{}},body:JSON.stringify(o??{})});return te(await p.json())},async retry(i,o,l){let p=await k(e,`/api/jobs/${encodeURIComponent(i)}/retry`,{method:"POST",headers:{"Content-Type":"application/json",...l?.idempotencyKey?{"Idempotency-Key":l.idempotencyKey}:{}},body:JSON.stringify(o??{})});return te(await p.json())},async regrade(i,o){let l={};o?.statuses?.length&&(l.statuses=o.statuses),o?.task_name!==void 0&&(l.task_name=o.task_name);let p=await k(e,`/api/jobs/${encodeURIComponent(i)}/regrade`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(l)});return te(await p.json())},async analyze(i,o){let l=await k(e,`/api/jobs/${encodeURIComponent(i)}/analyze`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o??{})});return te(await l.json())},async watchAnalysis(i,o){let l=o?.pollIntervalMs??Ct,p=l,g=null;for(;;){fe(o?.signal);let m;try{m=await n(i);}catch(b){if(b instanceof L&&(b.status===429||b.status===503)){await J(Math.max((b.retryAfterSec??0)*1e3,p),o?.signal),p=Math.min(p*2,St);continue}throw b}let h=m.stats.analysis??null,f=h?JSON.stringify([h.n_completed,h.n_failed,h.n_pending]):null,y=f!==null&&f!==g;if(y&&(g=f,o?.onStats?.(m)),h?.n_pending===0)return m;p=y?l:Math.min(p*2,St),await J(p,o?.signal);}},download:(async(i,o)=>Mn(e,`/api/jobs/${encodeURIComponent(i)}/download`,o,`job-${i}-results.tar.gz`)),async upload(i,o){let l={dataset:o?.dataset};if(typeof i=="object"&&i!==null){if(typeof i.archive_url!="string"||!i.archive_url.trim())throw new Error("jobs().upload() with a URL source requires { archive_url: 'https://\u2026' }");let w=await k(e,"/api/jobs/upload",{method:"POST",body:_e({...l,archive_url:i.archive_url})});return kt(await w.json())}if(typeof i!="string"||!i.trim())throw new Error("jobs().upload() requires a job directory (or .tar.gz archive) path, or { archive_url }");let p={fields:l,filename:"job.tar.gz",resumableThreshold:_t,resumablePath:"/api/jobs/upload/uploads",...o?.onUploadProgress!==void 0?{onBytes:o.onUploadProgress}:{},...o?.onRegistered!==void 0?{onRegistered:o.onRegistered}:{}},{stat:g}=await import('fs/promises');if((await g(i).catch(()=>null))?.isFile()){let w=await ja(e,"/api/jobs/upload",i,p);return kt(await w.json())}let{existsSync:h}=await import('fs'),{join:f,resolve:y}=await import('path'),b=y(i);for(let w of ["result.json","config.json"])if(!h(f(b,w)))throw new Error(`${b} does not contain ${w}`);let _=await Je(e,"/api/jobs/upload",{...p,directory:b});return kt(await _.json())},getImport:r,async watchImport(i,o){let l=o?.pollIntervalMs??Ct,p=null,g=null;for(;;){fe(o?.signal);let m;try{m=await r(i);}catch(f){if(f instanceof L&&(f.status===429||f.status===503)){await J(Math.max((f.retryAfterSec??0)*1e3,l),o?.signal);continue}throw f}let h=`${m.status}${m.receiving?":receiving":""}`;if(h!==p&&(p=h,o?.onStatus?.(m)),m.progress!==null){let f=JSON.stringify(m.progress);f!==g&&(g=f,o?.onProgress?.(m.progress,m));}if(m.status==="COMPLETED"||m.status==="FAILED")return m;await J(l,o?.signal);}},listImports(i){return ne(async o=>{let l=new URLSearchParams;o.limit!==void 0&&l.set("limit",String(o.limit)),o.cursor!==void 0&&l.set("cursor",o.cursor),i?.status!==void 0&&l.set("status",i.status);let p=l.toString()?`?${l}`:"",g=await k(e,`/api/jobs/imports${p}`);return F(await g.json(),kt)},i)},async delete(i){let l=await(await k(e,`/api/jobs/${encodeURIComponent(i)}`,{method:"DELETE"})).json();return {job_id:l.job_id??i,trials_deleted:l.trials_deleted??0,analyses_deleted:l.analyses_deleted??0}},async share(i,o){let l=await k(e,`/api/jobs/${encodeURIComponent(i)}/share`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});return q(await l.json())},async unshare(i,o){let l=await k(e,`/api/jobs/${encodeURIComponent(i)}/unshare`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});return q(await l.json())},async shares(i){let o=await k(e,`/api/jobs/${encodeURIComponent(i)}/shares`);return q(await o.json())},async grep(i,o,l){let p=await k(e,`/api/jobs/${encodeURIComponent(i)}/grep${z(l,{q:o,type:l?.type})}`);return F(await p.json(),hp)}}}function Ya(t){let e=pe("trials",t);async function n(s,a){let d=await k(e,`/api/trials/${encodeURIComponent(s)}/trace${z(a,{type:a?.type,grep:a?.grep,tail:a?.tail!==void 0?String(a.tail):void 0})}`);return F(await d.json(),$a)}async function r(s,a){let u=await(await k(e,`/api/trials/${encodeURIComponent(s)}/trace?stream=${a}`)).json();return a==="agent-home"?u.files??null:u.log??null}return {async get(s){let a=await k(e,`/api/trials/${encodeURIComponent(s)}`);return Es(await a.json())},trace:n,artifact:r,async*traceEvents(s,a){let d=a?.cursor;for(;;){let u=await n(s,{...a,cursor:d});for(let c of u.items)yield c;if(!u.nextCursor)return;d=u.nextCursor;}},async regrade(s){let a=await k(e,`/api/trials/${encodeURIComponent(s)}/regrade`,{method:"POST"});return te(await a.json())},async retry(s,a){let d=await k(e,`/api/trials/${encodeURIComponent(s)}/retry`,{method:"POST",...a?.idempotencyKey?{headers:{"Idempotency-Key":a.idempotencyKey}}:{}});return te(await d.json())},async stop(s){let d=await(await k(e,"/api/trials/stop",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({trial_ids:s})})).json();return {stopped:(d.stopped??[]).map(Es),stopped_analyses:(d.stopped_analyses??[]).map(On).filter(u=>u!==null),already_terminal:d.already_terminal??[],not_found:d.not_found??[]}},async files(s,a){let d=await k(e,`/api/trials/${encodeURIComponent(s)}/files${z(a)}`);return F(await d.json(),u=>({path:u.path,size_bytes:u.size_bytes}))},async file(s,a,d){let u=a.split("/").filter(Boolean).map(encodeURIComponent).join("/"),c=Ps(d),i=await k(e,`/api/trials/${encodeURIComponent(s)}/files/${u}`,c?{headers:{Range:c}}:void 0);return Buffer.from(await i.arrayBuffer())},filesystem:s=>As(e,`/api/trials/${encodeURIComponent(s)}`)}}function Xa(t){let e=t?.update;return typeof e?.sessionUpdate=="string"?e.sessionUpdate:"unknown"}function Qa(t){let e=pe("analyses",t),n=new Set;async function r(d){if(n.has(d))return;let u;try{u=await k(e,`/api/traces/trials/${encodeURIComponent(d)}/artifacts?what=analysis`);}catch(c){throw c instanceof L&&c.status===400?new Error(`"${d}" is not an analysis run (the artifacts door refuses it typed) \u2014 for a trial's artifacts use trials()`):c}await u.text().catch(()=>{}),n.add(d);}async function s(d,u){await r(d);let i=await(await k(e,`/api/traces/trials/${encodeURIComponent(d)}/artifacts?what=${u}`)).json();return u==="agent-home"?i.files??null:i.log??null}async function a(d){let u=await k(e,`/api/analyses${z(d,{scope:d?.scope,job:d?.job,status:d?.status&&d.status.length>0?d.status.join(","):void 0})}`);return F(await u.json(),c=>{let i=On(c);if(i===null)throw new Error("The analyses list served an unreadable analysis object");return i})}return {list(d){return ne(u=>a({...u,scope:d?.scope,job:d?.job,status:d?.status}),d)},async get(d){let c=await(await k(e,`/api/traces/trials/${encodeURIComponent(d)}/artifacts?what=analysis`)).json(),i=On(c.analysis);if(i===null)throw new Error(`The analysis feed served no readable verdict object for "${d}"`);return n.add(d),i},async transcript(d,u){let c=u?.since;if(c!==void 0&&(!Number.isInteger(c)||c<0))throw new Error(`transcript() since must be a non-negative integer, got ${c}`);let o=await(await k(e,`/api/traces/trials/${encodeURIComponent(d)}/events`+(c!==void 0?`?since=${c}`:""))).json(),l=o.session??{};if(l.kind!=="analysis"){let m=typeof l.kind=="string"?l.kind:"trial";throw new Error(`"${d}" is not an analysis run (the feed resolves it as a ${m}) \u2014 for a trial's trace use trials()`)}let p=c??0,g=Array.isArray(o.events)?o.events:[];return {id:typeof l.id=="string"?l.id:d,analyzed_trial_id:typeof l.analyzedTrialId=="string"?l.analyzedTrialId:null,job_id:typeof l.jobId=="string"?l.jobId:null,task_name:typeof l.tag=="string"?l.tag:null,model_name:typeof l.model=="string"?l.model:null,sandbox_provider:typeof l.provider=="string"?l.provider:null,sandbox_id:typeof l.sandboxId=="string"?l.sandboxId:null,is_ended:l.isEnded===true,total:typeof o.total=="number"?o.total:p+g.length,events:g.map((m,h)=>({seq:p+h,type:Xa(m),data:m&&typeof m=="object"&&!Array.isArray(m)?m:{}})),gateway_calls:Fa(o.gatewayCalls),stored_at:wt(o.storedAt,g.length,"Analysis transcript response")}},artifact:s,download:(async(d,u)=>Mn(e,`/api/analyses/${encodeURIComponent(d)}/download`,u,`analysis-${d}.tar.gz`)),async defaults(){return await(await k(e,"/api/analyses/defaults")).json()},filesystem:d=>As(e,`/api/analyses/${encodeURIComponent(d)}`)}}function Pn(t){if(!t||typeof t!="object"||Array.isArray(t))throw new Error("The checks surface served an unreadable check object");let e=t,n=Array.isArray(e.results)?e.results.filter(s=>!!s&&typeof s=="object"&&!Array.isArray(s)):[],r=e.visibility==="LINK"?"LINK":"PRIVATE";return {...e,visibility:r,results:n}}function Za(t){let e=pe("checks",t);async function n(u){let c=await k(e,`/api/checks/${encodeURIComponent(u)}`);return Pn(await c.json())}async function r(u){let c=await k(e,`/api/checks${z(u,{scope:u?.scope,status:u?.status&&u.status.length>0?u.status.join(","):void 0,dataset:u?.dataset})}`);return F(await c.json(),Pn)}let s=new Set;async function a(u){let c;try{c=await k(e,`/api/traces/trials/${encodeURIComponent(u)}/artifacts?what=task-check`);}catch(l){throw l instanceof L&&l.status===400?new Error(`"${u}" is not a task check (the artifacts door refuses it typed) \u2014 for a trial's artifacts use trials(), for an analysis's use analyses()`):l}let o=(await c.json()).task_check;if(!o||typeof o!="object"||Array.isArray(o))throw new Error(`The traces feed served no readable task check for "${u}"`);return s.add(u),o}async function d(u,c){s.has(u)||await a(u);let o=await(await k(e,`/api/traces/trials/${encodeURIComponent(u)}/artifacts?what=${c}`)).json();return c==="agent-home"?o.files??null:o.log??null}return {async create(u){let{source:c,onUploadProgress:i,...o}=u,l={config:JSON.stringify(o)};if("dataset"in c){if(typeof c.dataset!="string"||c.dataset.trim()==="")throw new Error('checks().create(): source.dataset must be "name" or "name@version"');let b=await k(e,"/api/checks",{method:"POST",body:_e({...l,dataset:c.dataset.trim()})});return Pn(await b.json())}let{existsSync:p,statSync:g}=await import('fs'),{basename:m,resolve:h}=await import('path'),f=h(c.directory);if(!p(f)||!g(f).isDirectory())throw new Error(`checks().create(): Path '${c.directory}' does not exist or is not a directory`);let y=await Je(e,"/api/checks",{directory:f,fields:l,filename:`${m(f)||"task"}.tar.gz`,...i!==void 0?{onBytes:i}:{}});return Pn(await y.json())},get:n,async defaults(){return await(await k(e,"/api/checks/defaults")).json()},list(u){return ne(c=>r({...c,scope:u?.scope,status:u?.status,dataset:u?.dataset}),u)},task:a,async transcript(u,c){let i=c?.since;if(i!==void 0&&(!Number.isInteger(i)||i<0))throw new Error(`transcript() since must be a non-negative integer, got ${i}`);let l=await(await k(e,`/api/traces/trials/${encodeURIComponent(u)}/events`+(i!==void 0?`?since=${i}`:""))).json(),p=l.session??{};if(p.kind!=="check"){let h=typeof p.kind=="string"?p.kind:"trial";throw new Error(`"${u}" is not a task check (the feed resolves it as a ${h}) \u2014 for a trial's trace use trials(), for an analysis's use analyses()`)}let g=i??0,m=Array.isArray(l.events)?l.events:[];return {id:typeof p.id=="string"?p.id:u,check_id:typeof p.checkId=="string"?p.checkId:null,dataset:typeof p.datasetRef=="string"?p.datasetRef:null,task_name:typeof p.tag=="string"?p.tag:null,model_name:typeof p.model=="string"?p.model:null,sandbox_provider:typeof p.provider=="string"?p.provider:null,sandbox_id:typeof p.sandboxId=="string"?p.sandboxId:null,is_ended:p.isEnded===true,total:typeof l.total=="number"?l.total:g+m.length,events:m.map((h,f)=>({seq:g+f,type:Xa(h),data:h&&typeof h=="object"&&!Array.isArray(h)?h:{}})),gateway_calls:Fa(l.gatewayCalls),stored_at:wt(l.storedAt,m.length,"Task check transcript response")}},artifact:d,download:(async(u,c)=>Mn(e,`/api/checks/${encodeURIComponent(u)}/download`,c,`check-${u}.tar.gz`)),async share(u,c){let i=await k(e,`/api/checks/${encodeURIComponent(u)}/share`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)});return q(await i.json())},async unshare(u,c){let i=await k(e,`/api/checks/${encodeURIComponent(u)}/unshare`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)});return q(await i.json())},async shares(u){let c=await k(e,`/api/checks/${encodeURIComponent(u)}/shares`);return q(await c.json())},async watch(u,c){let i=c?.pollIntervalMs??Ct,o=i,l=null;for(;;){fe(c?.signal);let p;try{p=await n(u);}catch(h){if(h instanceof L&&(h.status===429||h.status===503)){await J(Math.max((h.retryAfterSec??0)*1e3,o),c?.signal),o=Math.min(o*2,St);continue}throw h}let g=JSON.stringify(p.results.map(h=>[h.task_name,h.status])),m=g!==l;if(m&&(l=g,c?.onProgress?.(p)),p.status==="completed")return p;o=m?i:Math.min(o*2,St),await J(o,c?.signal);}},taskFilesystem:(u,c)=>As(e,`/api/checks/${encodeURIComponent(u)}/tasks/${encodeURIComponent(c)}`)}}function vp(t){let e=pe("auth",t);return {async status(){let r=await(await k(e,"/api/auth/status")).json(),s=r.key??{};return {user_id:r.user_id,email:r.email??null,key:{id:s.id,label:s.label??null,created_at:s.created_at,last_used_at:s.last_used_at??null}}}}}function Sp(t){return {user_id:t.user_id,email:t.email,role:t.role==="owner"?"owner":"member",joined_at:t.joined_at}}function xp(t){return {invite_id:t.invite_id,expires_at:typeof t.expires_at=="string"?t.expires_at:null,max_uses:typeof t.max_uses=="number"?t.max_uses:null,uses:typeof t.uses=="number"?t.uses:0,revoked_at:typeof t.revoked_at=="string"?t.revoked_at:null,created_at:t.created_at,token:t.token}}function An(t){return {org_id:t.org_id,slug:t.slug,display_name:t.display_name,personal:t.personal===true,...t.role==="owner"||t.role==="member"?{role:t.role}:{},created_at:t.created_at}}function Cp(t){let e=t.quota??{},n=t.usage??{},r=s=>typeof s=="number"?s:0;return {...An(t),member_count:r(t.member_count),quota:{max_concurrent_trials:r(e.max_concurrent_trials),max_queued_trials:r(e.max_queued_trials),max_concurrent_imports:r(e.max_concurrent_imports),max_concurrent_analyses:r(e.max_concurrent_analyses),max_concurrent_sessions:r(e.max_concurrent_sessions),monthly_budget_usd:typeof e.monthly_budget_usd=="number"?e.monthly_budget_usd:null,max_concurrent_sandboxes_e2b:r(e.max_concurrent_sandboxes_e2b),max_concurrent_sandboxes_daytona:r(e.max_concurrent_sandboxes_daytona),max_concurrent_sandboxes_modal:r(e.max_concurrent_sandboxes_modal)},usage:{in_flight_trials:r(n.in_flight_trials),queued_trials:r(n.queued_trials),in_flight_imports:r(n.in_flight_imports),in_flight_analyses:r(n.in_flight_analyses),active_sessions:r(n.active_sessions),month_spend_usd:typeof n.month_spend_usd=="number"?n.month_spend_usd:null,month_spend_as_of:typeof n.month_spend_as_of=="string"?n.month_spend_as_of:null}}}function Dn(t){let e=pe("orgs",t);return {async list(){let r=await(await k(e,"/api/orgs")).json();return (Array.isArray(r.items)?r.items:[]).map(s=>An(s))},async get(n){let r=await k(e,`/api/orgs/${encodeURIComponent(n)}`);return Cp(await r.json())},async create(n,r){let s=await k(e,"/api/orgs",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({slug:n,...r?.displayName!==void 0?{display_name:r.displayName}:{}})});return An(await s.json())},async invite(n){let r=await k(e,`/api/orgs/${encodeURIComponent(n)}/invites`,{method:"POST"});return xp(await r.json())},async join(n){let s=await(await k(e,"/api/orgs/invites/accept",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:n})})).json();return {org:An(s.org??{}),already_member:s.already_member===true}},async members(n){let s=await(await k(e,`/api/orgs/${encodeURIComponent(n)}/members`)).json();return (Array.isArray(s.items)?s.items:[]).map(a=>Sp(a))}}}function el(t){try{let e=JSON.parse(t);return e&&typeof e=="object"?e:{value:e}}catch{return {raw:t}}}function Rp(t){let e,n,r,s,a,d,u,c;return {get datasets(){return e??=qa(t)},get agents(){return n??=za(t)},get jobs(){return r??=Wa(t)},get trials(){return s??=Ya(t)},get analyses(){return a??=Qa(t)},get checks(){return d??=Za(t)},get skills(){return u??=Ha(t)},get orgs(){return c??=Dn(t)},meta(){return tl(t)}}}async function tl(t){let e=(t?.baseUrl||process.env.EVOLVE_DASHBOARD_URL||T).replace(/\/$/,""),n=await fetch(`${e}/api/meta`);return n.ok||await Tt(n),await n.json()}async function nl(t,e){try{await Dn({apiKey:e,baseUrl:Se()}).get(t);}catch(n){throw n instanceof L&&n.status===404?new P("org",`Organization ${JSON.stringify(t)} was not found, or you are not a member of it (${n.code}). Check the slug or id passed as org; the session would otherwise be refused by the dashboard and its trace lost.`):n}}function Is(t){return t.delivery==="direct"}var Ln=18181,B="/tmp/evolve-managed-secrets",Pt=`${B}/proxy.py`,Ge=`${B}/config.json`,we=`${B}/ca.crt`,Un=`${B}/ca.key`,Ke=`${B}/ca-bundle.crt`,il=["HTTP_PROXY","HTTPS_PROXY","ALL_PROXY","http_proxy","https_proxy","all_proxy","NO_PROXY","no_proxy","NODE_EXTRA_CA_CERTS","SSL_CERT_FILE","REQUESTS_CA_BUNDLE","CURL_CA_BUNDLE","GIT_SSL_CAINFO"];function ol(){return [...il]}var al=String.raw`#!/usr/bin/env python3
232
+ `)});}}}}async function*Aa(t,e,n){let r=await k(t,e,{headers:{Accept:"text/event-stream",...n?.lastEventId!==void 0?{"Last-Event-ID":n.lastEventId}:{}},signal:n?.signal});if(!r.body)throw new Error("Event stream response has no body");let s=[],a=Ba(c=>{s.push({event:c.event||"message",...c.id!==void 0?{id:c.id}:{},data:c.data?el(c.data):{}});}),d=r.body.getReader(),u=new TextDecoder;try{for(;;){let{done:c,value:i}=await d.read();if(c)break;for(a.push(u.decode(i,{stream:!0}));s.length>0;)yield s.shift();}}finally{d.cancel().catch(()=>{});}}function be(t){let e=new URLSearchParams;for(let[r,s]of Object.entries(t))s!==void 0&&e.set(r,String(s));let n=e.toString();return n?`?${n}`:""}function Na(t){return t.split("/").filter(Boolean).map(encodeURIComponent).join("/")}function As(t,e){return {async status(){return await(await k(t,`${e}/filesystem`)).json()},async list(n){return await(await k(t,`${e}/filesystem/files${be({path:n?.path,source:n?.source,cursor:n?.cursor,limit:n?.limit})}`)).json()},async read(n,r){let s=Ps(r?.range),a=await k(t,`${e}/filesystem/files/${Na(n)}${be({source:r?.source})}`,s?{headers:{Range:s}}:void 0);return Buffer.from(await a.arrayBuffer())},async search(n){return await(await k(t,`${e}/filesystem/search${be({q:n.q,path:n.path,regex:n.regex,limit:n.limit,source:n.source})}`)).json()},async changes(n){return await(await k(t,`${e}/filesystem/changes${be({source:n?.source,phase:n?.phase,cursor:n?.cursor,limit:n?.limit})}`)).json()},archive:(async n=>Mn(t,`${e}/filesystem/archive${be({path:n?.path,source:n?.source})}`,n,"filesystem.tar.gz")),async watch(n){return await(await k(t,`${e}/filesystem/watch`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({paths:n})})).json()},events(n){return Aa(t,`${e}/filesystem/events`,n)},async logs(n){return await(await k(t,`${e}/logs${be({stream:n.stream,cursor:n.cursor,limit:n.limit})}`)).json()},logEvents(n){return Aa(t,`${e}/logs/events`,n)},async procs(){return await(await k(t,`${e}/procs`)).json()}}}function yp(t,e){return {async status(){return await(await k(t,`${e}/filesystem`)).json()},async list(n){return await(await k(t,`${e}/filesystem/files${be({path:n?.path,cursor:n?.cursor,limit:n?.limit})}`)).json()},async read(n,r){let s=Ps(r?.range),a=await k(t,`${e}/filesystem/files/${Na(n)}`,s?{headers:{Range:s}}:void 0);return Buffer.from(await a.arrayBuffer())}}}function ne(t,e){let n,r=()=>n??=t({limit:e?.limit,cursor:e?.cursor});return {then(s,a){return r().then(s,a)},catch(s){return r().catch(s)},finally(s){return r().finally(s)},async*[Symbol.asyncIterator](){let s=e?.cursor;for(;;){let a=await t({limit:e?.limit,cursor:s});for(let d of a.items)yield d;if(!a.nextCursor)return;s=a.nextCursor;}}}}function _e(t){let e=new FormData;for(let[n,r]of Object.entries(t))r!==void 0&&e.set(n,r);return e}async function bp(t){let{readFileSync:e,readdirSync:n,statSync:r}=await import('fs'),{basename:s,join:a,resolve:d}=await import('path'),u=d(t),c=g=>r(g,{throwIfNoEntry:false})?.isFile()===true,i=g=>r(g,{throwIfNoEntry:false})?.isDirectory()===true;if(!i(u))throw new Error(`datasets().preflight(): not a directory: ${u}`);let o=[],l=u;if(c(a(u,"task.toml"))){let g=n(u,{withFileTypes:true}).filter(m=>m.isDirectory()&&!m.name.startsWith(".")).filter(m=>c(a(u,m.name,"task.toml"))).map(m=>m.name);if(i(a(u,"tasks"))||g.length>0)throw new Error(`${u} is ambiguous: it carries task.toml at its root (a single-task shape) AND corpus-shaped content \u2014 the import refuses this too; point at the one task directory or at a corpus of task directories, not a mix`);o.push({name:s(u),dir:u});}else {l=i(a(u,"tasks"))?a(u,"tasks"):u;for(let g of n(l,{withFileTypes:true})){if(!g.isDirectory()||g.name.startsWith("."))continue;let m=a(l,g.name);if(!c(a(m,"task.toml")))throw new Error(`${m} has no task.toml \u2014 every directory of a corpus must be a task directory (the import fails on it rather than skipping it)`);o.push({name:g.name,dir:m});}if(o.length===0)throw new Error(`${l} holds no task directories \u2014 nothing to check`);o.sort((g,m)=>g.name<m.name?-1:g.name>m.name?1:0);}let p=(l===u?[u]:[l,u]).map(g=>a(g,"dataset.toml")).find(c);return {tasks:o.map(({name:g,dir:m})=>({name:g,task_toml:e(a(m,"task.toml"),"utf8")})),...p!==void 0?{dataset_toml:e(p,"utf8")}:{}}}async function _p(t,e,n){let{postMultipartFile:r}=await Promise.resolve().then(()=>(Ss(),Ta)),s=await r({url:`${t.baseUrl}${e}`,method:n.method??"POST",headers:{Authorization:`Bearer ${t.apiKey}`},fields:n.fields,file:n.file,...n.onBytes!==void 0?{onBytes:n.onBytes}:{}});return s.ok||await Tt(s),s}async function ja(t,e,n,r){if(r.resumableThreshold!==void 0){let{stat:s}=await import('fs/promises'),{size:a}=await s(n);if(a>r.resumableThreshold){let{uploadArchiveResumable:d}=await Promise.resolve().then(()=>(gs(),ca)),u=await d({baseUrl:t.baseUrl,headers:{Authorization:`Bearer ${t.apiKey}`},file:{path:n},fields:r.fields,...r.resumablePath!==void 0?{sessionsPath:r.resumablePath}:{},...r.onBytes!==void 0?{onBytes:r.onBytes}:{},...r.onRegistered!==void 0?{onRegistered:r.onRegistered}:{}});return u.ok||await Tt(u),u}}return await _p(t,e,{method:r.method,fields:r.fields,file:{path:n,filename:r.filename},...r.onBytes!==void 0?{onBytes:r.onBytes}:{}})}async function Je(t,e,n){let{tarGzipDirectoryToFile:r}=await Promise.resolve().then(()=>(wr(),_r)),{mkdtemp:s,rm:a}=await import('fs/promises'),{tmpdir:d}=await import('os'),{join:u}=await import('path'),c=await s(u(d(),"evolve-upload-"));try{let i=u(c,n.filename);return await r(n.directory,i),await ja(t,e,i,n)}finally{await a(c,{recursive:true,force:true});}}function wp(t){let e,n=()=>(e||(e=(async()=>{let r=await t.next();for(;!r.done;)r=await t.next();return r.value})()),e);return {then(r,s){return n().then(r,s)},catch(r){return n().catch(r)},finally(r){return n().finally(r)},[Symbol.asyncIterator](){return t}}}var Ja="x-package-sha256",Rt=class extends Error{constructor(n,r){super(`downloaded bytes do not match the digest the server stated (expected ${n}, got ${r})`);this.expected=n;this.actual=r;}name="EvolveDigestMismatchError"},Et=class extends Error{constructor(n,r){super(`download ended early: the server declared ${n} bytes and ${r} arrived`);this.expectedBytes=n;this.receivedBytes=r;}name="EvolveIncompleteDownloadError"};function Ka(t,e){let n=t.headers.get("Content-Length");if(n===null)return;let r=Number(n);if(Number.isFinite(r)&&e!==r)throw new Et(r,e)}async function Va(t,e){let n=t.headers.get(Ja);if(!n)return;let{createHash:r}=await import('crypto'),s=r("sha256").update(e).digest("hex");if(s!==n)throw new Rt(n,s)}function kp(t,e){let r=(t.headers.get("Content-Disposition")||"").match(/filename="([^"]+)"/);if(!r)return e;let s=Z.basename(r[1]);return s===""||s==="."||s===".."||/[/\\]/.test(s)||/[\u0000-\u001f]/.test(s)?e:s}async function Ga(t,e,n){if(!t.body)throw new Error("Download response has no body");await promises.mkdir(e,{recursive:true});let r=Z.join(e,kp(t,n)),{createHash:s,randomBytes:a}=await import('crypto'),d=`${r}.${a(8).toString("hex")}.part`,u=s("sha256"),c=0,i=stream.Readable.fromWeb(t.body);i.on("data",o=>{u.update(o),c+=o.length;});try{await promises$1.pipeline(i,ee.createWriteStream(d));let o=t.headers.get("Content-Length");if(o!==null&&c!==Number(o))throw new Et(Number(o),c);let l=t.headers.get(Ja),p=u.digest("hex");if(l&&p!==l)throw new Rt(l,p);await promises.rename(d,r);}catch(o){throw await promises.rm(d,{force:true}).catch(()=>{}),o}return r}async function Mn(t,e,n,r){let s=await k(t,e);if(n?.stream){if(!s.body)throw new Error("Download response has no body");return s.body}if(n?.to)return Ga(s,n.to,r);let a=Buffer.from(await s.arrayBuffer());return Ka(s,a.length),await Va(s,a),a}function qa(t){let e=pe("datasets",t);async function n(i){let o=await k(e,`/api/datasets/imports/${encodeURIComponent(i)}`);return je(await o.json())}function r(i){if(!i||typeof i!="object")return null;let o=i;return {git_url:o.git_url??null,ref:o.ref,current_commit:o.current_commit,path:o.path??null,latest_commit:o.latest_commit??null,acked_commit:o.acked_commit??null,moved:o.moved===true,behind_by:typeof o.behind_by=="number"?o.behind_by:null,checked_at:o.checked_at??null,error:o.error??null,auto_import:o.auto_import===true}}function s(i){return {name:i.name,title:i.title??null,description:i.description??null,active_version:i.active_version?Ne(i.active_version):null,latest_version:i.latest_version?Ne(i.latest_version):null,versions:(i.versions||[]).map(Ne),selected_version:i.selected_version?Ne(i.selected_version):null,tasks:F(i.tasks,ep),failed_tasks:Zu(i.failed_tasks),upstream:r(i.upstream),created_at:i.created_at,updated_at:i.updated_at}}async function a(i,o){let l=En(i),p=z(o,{version:l.version}),g=await k(e,`/api/datasets/${encodeURIComponent(l.name)}${p}`);return s(await g.json())}async function d(i,o){let l=o?.pollIntervalMs??Ct,p=o?.settleTimeoutMs??Yu,g=Date.now()+p,m=`${i.name}@${i.version}`,h=null,f=null,y=()=>f?.state==="FAILED"?new xt("settle_timeout",`Import ${i.id}'s dataset "${i.name}" version "${i.version}" settled FAILED, but the final import read kept answering rate-limited/unavailable past the ${p}ms settle budget. Read the failure with datasets().getImport("${i.id}").`,{importId:i.id,dataset:i.name,version:i.version,state:f.state}):new xt("settle_timeout",`Import ${i.id} completed, but dataset "${i.name}" version "${i.version}" did not settle within ${p}ms: last observed state ${f?.state??"never observed"}. Keep following with datasets().get("${m}").`,{importId:i.id,dataset:i.name,version:i.version,state:f?.state??null}),b=async _=>{for(;;){fe(o?.signal);try{return await _()}catch(w){if(!(w instanceof L)||w.status!==429&&w.status!==503)throw w;let S=g-Date.now();if(S<=0)throw y();await J(Math.min(Math.max((w.retryAfterSec??0)*1e3,l),S),o?.signal);}}};for(;;){fe(o?.signal);let _=await b(()=>a(m,{limit:1})),w=_.selected_version;if(w){if(f=w,w.state!==h&&(h=w.state,o?.onVersion?.(w,_)),w.state==="FAILED")return b(()=>n(i.id));if(w.state==="READY"||w.state==="ARCHIVED")return i}if(Date.now()>=g)throw y();await J(l,o?.signal);}}function u(i){return {name:i.name,title:i.title??null,description:i.description??null,active_version:i.active_version?Ne(i.active_version):null,latest_version:i.latest_version?Ne(i.latest_version):null,upstream:r(i.upstream)}}async function c(i){let o=await k(e,`/api/datasets${z(i,{search:i?.search})}`);return F(await o.json(),u)}return {list(i){return ne(o=>c({...o,search:i?.search}),i)},get:a,async getActive(i,o){let l=await a(i,o);if(l.active_version===null)throw new In(i);return {name:l.name,title:l.title,description:l.description,active_version:l.active_version,version:l.active_version.version,tasks:l.tasks??{items:[],nextCursor:null,hasMore:false},versions:l.versions??[],created_at:l.created_at,updated_at:l.updated_at}},async getTaskBuild(i,o){let l=En(i);if(l.version===void 0)throw new Error(`datasets().getTaskBuild() needs "name@version" \u2014 a task's build outcome belongs to one immutable version (got "${i}")`);let g=await(await k(e,`/api/datasets/${encodeURIComponent(l.name)}/versions/${encodeURIComponent(l.version)}/tasks/${encodeURIComponent(o)}/build`)).json();return {task_name:g.task_name??o,state:g.state,failure:g.failure&&typeof g.failure=="object"?Ma(g.failure):null,build_log_ref:g.build_log_ref??null}},async preflight(i){let o=i?.source?.directory;if(typeof o!="string"||o==="")throw new Error("datasets().preflight() requires { source: { directory } } \u2014 a local corpus directory whose task.toml files are checked server-side before any upload");let l=await bp(o);return await(await k(e,"/api/datasets/preflight",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(l)})).json()},async publish(i,o){let l=i.source,p=i.org??e.org;if(l?.directory){if(i.name===void 0||i.version===void 0){let{existsSync:m}=await import('fs'),{join:h}=await import('path');if(!(m(h(l.directory,"dataset.toml"))||m(h(l.directory,"tasks","dataset.toml"))))throw new Error(`datasets().publish() needs ${i.name===void 0?"a name":"a version"} \u2014 pass it explicitly, or add a dataset.toml manifest to the corpus directory (the server then derives name and version from it)`)}let g=await Je(e,"/api/datasets/publish",{fields:{name:i.name,version:i.version,org:p},directory:l.directory,filename:"corpus.tar.gz",...o?.onUploadProgress!==void 0?{onBytes:o.onUploadProgress}:{},...o?.onRegistered!==void 0?{onRegistered:o.onRegistered}:{},resumableThreshold:_t});return je(await g.json())}if(l&&"archive_url"in l&&l.archive_url){if(i.name===void 0||i.version===void 0)throw new Error("datasets().publish() requires name and version for an archive_url source \u2014 the server fetches the tarball only after the publish is accepted, so a manifest cannot supply them");let g=await k(e,"/api/datasets/publish",{method:"POST",body:_e({name:i.name,version:i.version,archive_url:l.archive_url,org:p})});return je(await g.json())}if(l&&"hub_package"in l&&l.hub_package){let g=await k(e,"/api/datasets/publish",{method:"POST",body:_e({...i.name!==void 0?{name:i.name}:{},...i.version!==void 0?{version:i.version}:{},hub_package:l.hub_package,org:p})});return je(await g.json())}if(l&&"git_url"in l&&l.git_url){if(i.name===void 0||i.version===void 0)throw new Error("datasets().publish() requires name and version for a git source \u2014 a dataset.toml manifest can only supply them for a directory source, because a git repository is cloned server-side after the publish is accepted");let g=await k(e,"/api/datasets/publish",{method:"POST",body:_e({name:i.name,version:i.version,git_url:l.git_url,git_ref:l.git_ref,...l.git_path!==void 0?{git_path:l.git_path}:{},org:p})});return je(await g.json())}throw new Error("datasets().publish() requires a source: a git source ({ source: { git_url, git_ref } }), a local corpus directory ({ source: { directory } }), a public tarball url ({ source: { archive_url } }), or a Harbor hub package ({ source: { hub_package } }); plus name and version (optional for a directory whose corpus carries a dataset.toml manifest, and for a hub package, which supplies its own defaults)")},getImport:n,async watchImport(i,o){let l=o?.pollIntervalMs??Ct,p=null,g=null;for(;;){fe(o?.signal);let m;try{m=await n(i);}catch(f){if(f instanceof L&&(f.status===429||f.status===503)){await J(Math.max((f.retryAfterSec??0)*1e3,l),o?.signal);continue}throw f}let h=`${m.status}${m.receiving===true?":receiving":""}`;if(h!==p&&(p=h,o?.onStatus?.(m)),m.progress!==null){let f=JSON.stringify(m.progress);f!==g&&(g=f,o?.onProgress?.(m.progress,m));}if(m.status==="FAILED")return m;if(m.status==="COMPLETED")return d(m,o);await J(l,o?.signal);}},download:(async(i,o)=>{let l=En(i),p=l.version?`?version=${encodeURIComponent(l.version)}`:"",g=await k(e,`/api/datasets/${encodeURIComponent(l.name)}/download${p}`);if(o?.stream){if(!g.body)throw new Error("Package response has no body");return g.body}if(o?.to)return Ga(g,o.to,`${l.name}-corpus.tar.gz`);let m=Buffer.from(await g.arrayBuffer());return Ka(g,m.length),await Va(g,m),m}),listImports(i){return ne(async o=>{let l=new URLSearchParams;o.limit!==void 0&&l.set("limit",String(o.limit)),o.cursor!==void 0&&l.set("cursor",o.cursor),i?.status!==void 0&&l.set("status",i.status),i?.dataset!==void 0&&l.set("dataset",i.dataset);let p=l.toString()?`?${l}`:"",g=await k(e,`/api/datasets/imports${p}`);return F(await g.json(),je)},i)},async activate(i,o){let l=await k(e,`/api/datasets/${encodeURIComponent(i)}/versions/${encodeURIComponent(o)}/activate`,{method:"POST"});return s(await l.json())},async update(i,o){let l=await k(e,`/api/datasets/${encodeURIComponent(i)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});return u(await l.json())},async delete(i){await k(e,`/api/datasets/${encodeURIComponent(i)}`,{method:"DELETE"});},taskFiles(i,o){let l=En(i);if(l.version===void 0)throw new Error(`datasets().taskFiles() needs "name@version" \u2014 a task's files belong to one immutable version (got "${i}")`);return yp(e,`/api/datasets/${encodeURIComponent(l.name)}/versions/${encodeURIComponent(l.version)}/tasks/${encodeURIComponent(o)}`)}}}function za(t){let e=pe("agents",t);return {async create(n){let r=Ia("agents().create()",{...n,org:n.org??e.org}),s=r.directory?await Je(e,"/api/agents",{fields:r.fields,directory:r.directory,filename:"source.tar.gz"}):await k(e,"/api/agents",{method:"POST",body:_e(r.fields)});return Tn(await s.json())},list(n){return ne(async r=>{let s=await k(e,`/api/agents${z(r,{scope:n?.scope})}`);return F(await s.json(),Tn)},n)},async get(n){let r=await k(e,`/api/agents/${encodeURIComponent(n)}`);return Tn(await r.json())},async delete(n){await k(e,`/api/agents/${encodeURIComponent(n)}`,{method:"DELETE"});},async upsert(n,r){let s=Ia("agents().upsert()",{...r,name:n,org:r.org??e.org}),a=s.directory?await Je(e,`/api/agents/${encodeURIComponent(n)}`,{method:"PUT",fields:s.fields,directory:s.directory,filename:"source.tar.gz"}):await k(e,`/api/agents/${encodeURIComponent(n)}`,{method:"PUT",body:_e(s.fields)});return Tn(await a.json())}}}function Ia(t,e){let n=typeof e.install_script=="string",r=typeof e.directory=="string";if(n&&r)throw new Error(`${t} takes EITHER an install script ({ install_script }) or a local directory ({ directory }), not both`);if(!n&&!r)throw new Error(`${t} requires either an install script ({ install_script }) or a local directory ({ directory }), plus run_command`);let s={name:e.name,org:e.org,run_command:e.run_command,...e.env!==void 0?{env:JSON.stringify(e.env)}:{},...n?{install_script:e.install_script}:{}};return r?{fields:s,directory:e.directory}:{fields:s}}function xs(t){return {id:t.id,name:t.name,org:typeof t.org=="string"?t.org:null,digest:t.digest,size_bytes:t.size_bytes??0,description:t.description??null,ref:t.ref??`upload:${t.id}`,created_at:t.created_at}}function Ha(t){let e=pe("skills",t);return {async upload(n,r){if(typeof n!="string"||!n.trim())throw new Error("skills().upload() requires a local skill directory path");let{basename:s,resolve:a}=await import('path'),d=s(a(n)),c=await(await Je(e,"/api/skills",{fields:{name:d||void 0,org:r?.org??e.org},directory:n,filename:"skill.tar.gz"})).json();return (Array.isArray(c.skills)?c.skills:[c]).map(xs)},list(n){return ne(async r=>{let s=await k(e,`/api/skills${z(r,{scope:n?.scope})}`);return F(await s.json(),xs)},n)},async get(n){let s=await(await k(e,`/api/skills/${encodeURIComponent(n)}`)).json();return {...xs(s),skill_md:s.skill_md??null}},async delete(n){await k(e,`/api/skills/${encodeURIComponent(n)}`,{method:"DELETE"});}}}function Wa(t){let e=pe("jobs",t);async function n(i){let o=await k(e,`/api/jobs/${encodeURIComponent(i)}`);return te(await o.json())}async function r(i){let o=await k(e,`/api/jobs/imports/${encodeURIComponent(i)}`);return kt(await o.json())}function s(i){return i.kind!=="check"?te(i):{...i,kind:"check",visibility:i.visibility==="LINK"?"LINK":"PRIVATE",cost_usd:vt(i.cost_usd),finished_at:i.finished_at??null}}async function a(i){let o=await k(e,`/api/jobs${z(i,{search:i?.search,scope:i?.scope,kind:i?.kind})}`);return F(await o.json(),s)}function d(i){let o=i.trials??{};return {task_name:i.task_name,source:i.source,trials:{total:o.total??0,byStatus:o.byStatus??{}},mean_reward:i.mean_reward??null,cost_usd:i.cost_usd??null,check:i.check&&typeof i.check=="object"&&!Array.isArray(i.check)?i.check:null}}async function u(i,o){let l=z(o,{status:o?.status?.length?o.status.join(","):void 0,dataset:o?.dataset}),p=await k(e,`/api/jobs/${encodeURIComponent(i)}/trials${l}`);return F(await p.json(),Es)}async function*c(i,o){let{onEvent:l,signal:p}=o??{},g=o?.reconnectDelayMs??zu,m=o?.maxReconnectDelayMs??St,h=null,f=false,y=false,b=g;for(;!f;){fe(p);let _;try{_=await fetch(`${e.baseUrl}/api/jobs/${encodeURIComponent(i)}/events`,{headers:{Authorization:`Bearer ${e.apiKey}`,Accept:"text/event-stream",...h!==null?{"Last-Event-ID":String(h)}:{}},signal:p});}catch(E){if(Pa(E,p))throw E;await J(b,p),b=Math.min(b*2,m);continue}if(!_.ok){if(_.status===429||_.status>=500){let E=await _.text().catch(()=>""),A=yt(E,_)??0,$=A>0?Math.max(A*1e3,b):b;await J($,p),b=Math.min(b*2,m);continue}await Tt(_);}if(!_.body)throw new Error("Event stream response has no body");let w=false,S=[],v=Ba(E=>{let A=Number(E.id),$={seq:Number.isInteger(A)?A:-1,type:E.event||"message",data:E.data?el(E.data):{}};Number.isInteger(A)&&(h=A),w=true,Wu.has($.type)&&(f=true),S.push($);}),x=_.body.getReader(),R=new TextDecoder;try{for(;!f;){let{done:E,value:A}=await x.read();if(E)break;v.push(R.decode(A,{stream:!0}));for(let $ of S)l?.($),yield $;S.length=0;}}catch(E){if(Pa(E,p))throw E}finally{await x.cancel().catch(()=>{});}if(f)break;fe(p);let I=await n(i);if(Hu.has(I.status)){if(y)return I;y=true;continue}w&&(b=g),await J(b,p),b=Math.min(b*2,m);}return n(i)}return {async start(i,o){let l=i.org??e.org,p=l!==void 0?{...i,org:l}:i,g=await k(e,"/api/jobs",{method:"POST",headers:{"Content-Type":"application/json",...o?.idempotencyKey?{"Idempotency-Key":o.idempotencyKey}:{}},body:JSON.stringify(p)});return te(await g.json())},get:n,list(i){return ne(o=>a({...o,search:i?.search,scope:i?.scope,kind:i?.kind}),i)},trials(i,o){return ne(l=>u(i,{...l,status:o?.status,dataset:o?.dataset}),o)},tasks(i,o){return ne(async l=>{let p=await k(e,`/api/jobs/${encodeURIComponent(i)}/tasks${z(l)}`);return F(await p.json(),d)},o)},watch(i,o){return wp(c(i,o))},async cancel(i){let o=await k(e,`/api/jobs/${encodeURIComponent(i)}/cancel`,{method:"POST"});return te(await o.json())},async compare(i){let o=i.map(encodeURIComponent).join(","),p=await(await k(e,`/api/jobs/compare?ids=${o}`)).json();return {jobs:(p.jobs||[]).map(gp),taskMatrix:(p.taskMatrix||[]).map(fp)}},async resume(i,o,l){let p=await k(e,`/api/jobs/${encodeURIComponent(i)}/resume`,{method:"POST",headers:{"Content-Type":"application/json",...l?.idempotencyKey?{"Idempotency-Key":l.idempotencyKey}:{}},body:JSON.stringify(o??{})});return te(await p.json())},async retry(i,o,l){let p=await k(e,`/api/jobs/${encodeURIComponent(i)}/retry`,{method:"POST",headers:{"Content-Type":"application/json",...l?.idempotencyKey?{"Idempotency-Key":l.idempotencyKey}:{}},body:JSON.stringify(o??{})});return te(await p.json())},async regrade(i,o){let l={};o?.statuses?.length&&(l.statuses=o.statuses),o?.task_name!==void 0&&(l.task_name=o.task_name);let p=await k(e,`/api/jobs/${encodeURIComponent(i)}/regrade`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(l)});return te(await p.json())},async analyze(i,o){let l=await k(e,`/api/jobs/${encodeURIComponent(i)}/analyze`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o??{})});return te(await l.json())},async watchAnalysis(i,o){let l=o?.pollIntervalMs??Ct,p=l,g=null;for(;;){fe(o?.signal);let m;try{m=await n(i);}catch(b){if(b instanceof L&&(b.status===429||b.status===503)){await J(Math.max((b.retryAfterSec??0)*1e3,p),o?.signal),p=Math.min(p*2,St);continue}throw b}let h=m.stats.analysis??null,f=h?JSON.stringify([h.n_completed,h.n_failed,h.n_pending]):null,y=f!==null&&f!==g;if(y&&(g=f,o?.onStats?.(m)),h?.n_pending===0)return m;p=y?l:Math.min(p*2,St),await J(p,o?.signal);}},download:(async(i,o)=>Mn(e,`/api/jobs/${encodeURIComponent(i)}/download`,o,`job-${i}-results.tar.gz`)),async upload(i,o){let l={dataset:o?.dataset};if(typeof i=="object"&&i!==null){if(typeof i.archive_url!="string"||!i.archive_url.trim())throw new Error("jobs().upload() with a URL source requires { archive_url: 'https://\u2026' }");let w=await k(e,"/api/jobs/upload",{method:"POST",body:_e({...l,archive_url:i.archive_url})});return kt(await w.json())}if(typeof i!="string"||!i.trim())throw new Error("jobs().upload() requires a job directory (or .tar.gz archive) path, or { archive_url }");let p={fields:l,filename:"job.tar.gz",resumableThreshold:_t,resumablePath:"/api/jobs/upload/uploads",...o?.onUploadProgress!==void 0?{onBytes:o.onUploadProgress}:{},...o?.onRegistered!==void 0?{onRegistered:o.onRegistered}:{}},{stat:g}=await import('fs/promises');if((await g(i).catch(()=>null))?.isFile()){let w=await ja(e,"/api/jobs/upload",i,p);return kt(await w.json())}let{existsSync:h}=await import('fs'),{join:f,resolve:y}=await import('path'),b=y(i);for(let w of ["result.json","config.json"])if(!h(f(b,w)))throw new Error(`${b} does not contain ${w}`);let _=await Je(e,"/api/jobs/upload",{...p,directory:b});return kt(await _.json())},getImport:r,async watchImport(i,o){let l=o?.pollIntervalMs??Ct,p=null,g=null;for(;;){fe(o?.signal);let m;try{m=await r(i);}catch(f){if(f instanceof L&&(f.status===429||f.status===503)){await J(Math.max((f.retryAfterSec??0)*1e3,l),o?.signal);continue}throw f}let h=`${m.status}${m.receiving?":receiving":""}`;if(h!==p&&(p=h,o?.onStatus?.(m)),m.progress!==null){let f=JSON.stringify(m.progress);f!==g&&(g=f,o?.onProgress?.(m.progress,m));}if(m.status==="COMPLETED"||m.status==="FAILED")return m;await J(l,o?.signal);}},listImports(i){return ne(async o=>{let l=new URLSearchParams;o.limit!==void 0&&l.set("limit",String(o.limit)),o.cursor!==void 0&&l.set("cursor",o.cursor),i?.status!==void 0&&l.set("status",i.status);let p=l.toString()?`?${l}`:"",g=await k(e,`/api/jobs/imports${p}`);return F(await g.json(),kt)},i)},async delete(i){let l=await(await k(e,`/api/jobs/${encodeURIComponent(i)}`,{method:"DELETE"})).json();return {job_id:l.job_id??i,trials_deleted:l.trials_deleted??0,analyses_deleted:l.analyses_deleted??0}},async share(i,o){let l=await k(e,`/api/jobs/${encodeURIComponent(i)}/share`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});return q(await l.json())},async unshare(i,o){let l=await k(e,`/api/jobs/${encodeURIComponent(i)}/unshare`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});return q(await l.json())},async shares(i){let o=await k(e,`/api/jobs/${encodeURIComponent(i)}/shares`);return q(await o.json())},async grep(i,o,l){let p=await k(e,`/api/jobs/${encodeURIComponent(i)}/grep${z(l,{q:o,type:l?.type})}`);return F(await p.json(),hp)}}}function Ya(t){let e=pe("trials",t);async function n(s,a){let d=await k(e,`/api/trials/${encodeURIComponent(s)}/trace${z(a,{type:a?.type,grep:a?.grep,tail:a?.tail!==void 0?String(a.tail):void 0})}`);return F(await d.json(),$a)}async function r(s,a){let u=await(await k(e,`/api/trials/${encodeURIComponent(s)}/trace?stream=${a}`)).json();return a==="agent-home"?u.files??null:u.log??null}return {async get(s){let a=await k(e,`/api/trials/${encodeURIComponent(s)}`);return Es(await a.json())},trace:n,artifact:r,async*traceEvents(s,a){let d=a?.cursor;for(;;){let u=await n(s,{...a,cursor:d});for(let c of u.items)yield c;if(!u.nextCursor)return;d=u.nextCursor;}},async regrade(s){let a=await k(e,`/api/trials/${encodeURIComponent(s)}/regrade`,{method:"POST"});return te(await a.json())},async retry(s,a){let d=await k(e,`/api/trials/${encodeURIComponent(s)}/retry`,{method:"POST",...a?.idempotencyKey?{headers:{"Idempotency-Key":a.idempotencyKey}}:{}});return te(await d.json())},async stop(s){let d=await(await k(e,"/api/trials/stop",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({trial_ids:s})})).json();return {stopped:(d.stopped??[]).map(Es),stopped_analyses:(d.stopped_analyses??[]).map(On).filter(u=>u!==null),already_terminal:d.already_terminal??[],not_found:d.not_found??[]}},async files(s,a){let d=await k(e,`/api/trials/${encodeURIComponent(s)}/files${z(a)}`);return F(await d.json(),u=>({path:u.path,size_bytes:u.size_bytes}))},async file(s,a,d){let u=a.split("/").filter(Boolean).map(encodeURIComponent).join("/"),c=Ps(d),i=await k(e,`/api/trials/${encodeURIComponent(s)}/files/${u}`,c?{headers:{Range:c}}:void 0);return Buffer.from(await i.arrayBuffer())},filesystem:s=>As(e,`/api/trials/${encodeURIComponent(s)}`)}}function Xa(t){let e=t?.update;return typeof e?.sessionUpdate=="string"?e.sessionUpdate:"unknown"}function Qa(t){let e=pe("analyses",t),n=new Set;async function r(d){if(n.has(d))return;let u;try{u=await k(e,`/api/traces/trials/${encodeURIComponent(d)}/artifacts?what=analysis`);}catch(c){throw c instanceof L&&c.status===400?new Error(`"${d}" is not an analysis run (the artifacts door refuses it typed) \u2014 for a trial's artifacts use trials()`):c}await u.text().catch(()=>{}),n.add(d);}async function s(d,u){await r(d);let i=await(await k(e,`/api/traces/trials/${encodeURIComponent(d)}/artifacts?what=${u}`)).json();return u==="agent-home"?i.files??null:i.log??null}async function a(d){let u=await k(e,`/api/analyses${z(d,{scope:d?.scope,job:d?.job,status:d?.status&&d.status.length>0?d.status.join(","):void 0})}`);return F(await u.json(),c=>{let i=On(c);if(i===null)throw new Error("The analyses list served an unreadable analysis object");return i})}return {list(d){return ne(u=>a({...u,scope:d?.scope,job:d?.job,status:d?.status}),d)},async get(d){let c=await(await k(e,`/api/traces/trials/${encodeURIComponent(d)}/artifacts?what=analysis`)).json(),i=On(c.analysis);if(i===null)throw new Error(`The analysis feed served no readable analysis object for "${d}"`);return n.add(d),i},async transcript(d,u){let c=u?.since;if(c!==void 0&&(!Number.isInteger(c)||c<0))throw new Error(`transcript() since must be a non-negative integer, got ${c}`);let o=await(await k(e,`/api/traces/trials/${encodeURIComponent(d)}/events`+(c!==void 0?`?since=${c}`:""))).json(),l=o.session??{};if(l.kind!=="analysis"){let m=typeof l.kind=="string"?l.kind:"trial";throw new Error(`"${d}" is not an analysis run (the feed resolves it as a ${m}) \u2014 for a trial's trace use trials()`)}let p=c??0,g=Array.isArray(o.events)?o.events:[];return {id:typeof l.id=="string"?l.id:d,analyzed_trial_id:typeof l.analyzedTrialId=="string"?l.analyzedTrialId:null,job_id:typeof l.jobId=="string"?l.jobId:null,task_name:typeof l.tag=="string"?l.tag:null,model_name:typeof l.model=="string"?l.model:null,sandbox_provider:typeof l.provider=="string"?l.provider:null,sandbox_id:typeof l.sandboxId=="string"?l.sandboxId:null,is_ended:l.isEnded===true,total:typeof o.total=="number"?o.total:p+g.length,events:g.map((m,h)=>({seq:p+h,type:Xa(m),data:m&&typeof m=="object"&&!Array.isArray(m)?m:{}})),gateway_calls:Fa(o.gatewayCalls),stored_at:wt(o.storedAt,g.length,"Analysis transcript response")}},artifact:s,download:(async(d,u)=>Mn(e,`/api/analyses/${encodeURIComponent(d)}/download`,u,`analysis-${d}.tar.gz`)),async defaults(){return await(await k(e,"/api/analyses/defaults")).json()},filesystem:d=>As(e,`/api/analyses/${encodeURIComponent(d)}`)}}function Pn(t){if(!t||typeof t!="object"||Array.isArray(t))throw new Error("The checks surface served an unreadable check object");let e=t,n=Array.isArray(e.results)?e.results.filter(s=>!!s&&typeof s=="object"&&!Array.isArray(s)):[],r=e.visibility==="LINK"?"LINK":"PRIVATE";return {...e,visibility:r,results:n}}function Za(t){let e=pe("checks",t);async function n(u){let c=await k(e,`/api/checks/${encodeURIComponent(u)}`);return Pn(await c.json())}async function r(u){let c=await k(e,`/api/checks${z(u,{scope:u?.scope,status:u?.status&&u.status.length>0?u.status.join(","):void 0,dataset:u?.dataset})}`);return F(await c.json(),Pn)}let s=new Set;async function a(u){let c;try{c=await k(e,`/api/traces/trials/${encodeURIComponent(u)}/artifacts?what=task-check`);}catch(l){throw l instanceof L&&l.status===400?new Error(`"${u}" is not a task check (the artifacts door refuses it typed) \u2014 for a trial's artifacts use trials(), for an analysis's use analyses()`):l}let o=(await c.json()).task_check;if(!o||typeof o!="object"||Array.isArray(o))throw new Error(`The traces feed served no readable task check for "${u}"`);return s.add(u),o}async function d(u,c){s.has(u)||await a(u);let o=await(await k(e,`/api/traces/trials/${encodeURIComponent(u)}/artifacts?what=${c}`)).json();return c==="agent-home"?o.files??null:o.log??null}return {async create(u){let{source:c,onUploadProgress:i,...o}=u,l={config:JSON.stringify(o)};if("dataset"in c){if(typeof c.dataset!="string"||c.dataset.trim()==="")throw new Error('checks().create(): source.dataset must be "name" or "name@version"');let b=await k(e,"/api/checks",{method:"POST",body:_e({...l,dataset:c.dataset.trim()})});return Pn(await b.json())}let{existsSync:p,statSync:g}=await import('fs'),{basename:m,resolve:h}=await import('path'),f=h(c.directory);if(!p(f)||!g(f).isDirectory())throw new Error(`checks().create(): Path '${c.directory}' does not exist or is not a directory`);let y=await Je(e,"/api/checks",{directory:f,fields:l,filename:`${m(f)||"task"}.tar.gz`,...i!==void 0?{onBytes:i}:{}});return Pn(await y.json())},get:n,async defaults(){return await(await k(e,"/api/checks/defaults")).json()},list(u){return ne(c=>r({...c,scope:u?.scope,status:u?.status,dataset:u?.dataset}),u)},task:a,async transcript(u,c){let i=c?.since;if(i!==void 0&&(!Number.isInteger(i)||i<0))throw new Error(`transcript() since must be a non-negative integer, got ${i}`);let l=await(await k(e,`/api/traces/trials/${encodeURIComponent(u)}/events`+(i!==void 0?`?since=${i}`:""))).json(),p=l.session??{};if(p.kind!=="check"){let h=typeof p.kind=="string"?p.kind:"trial";throw new Error(`"${u}" is not a task check (the feed resolves it as a ${h}) \u2014 for a trial's trace use trials(), for an analysis's use analyses()`)}let g=i??0,m=Array.isArray(l.events)?l.events:[];return {id:typeof p.id=="string"?p.id:u,check_id:typeof p.checkId=="string"?p.checkId:null,dataset:typeof p.datasetRef=="string"?p.datasetRef:null,task_name:typeof p.tag=="string"?p.tag:null,model_name:typeof p.model=="string"?p.model:null,sandbox_provider:typeof p.provider=="string"?p.provider:null,sandbox_id:typeof p.sandboxId=="string"?p.sandboxId:null,is_ended:p.isEnded===true,total:typeof l.total=="number"?l.total:g+m.length,events:m.map((h,f)=>({seq:g+f,type:Xa(h),data:h&&typeof h=="object"&&!Array.isArray(h)?h:{}})),gateway_calls:Fa(l.gatewayCalls),stored_at:wt(l.storedAt,m.length,"Task check transcript response")}},artifact:d,download:(async(u,c)=>Mn(e,`/api/checks/${encodeURIComponent(u)}/download`,c,`check-${u}.tar.gz`)),async share(u,c){let i=await k(e,`/api/checks/${encodeURIComponent(u)}/share`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)});return q(await i.json())},async unshare(u,c){let i=await k(e,`/api/checks/${encodeURIComponent(u)}/unshare`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)});return q(await i.json())},async shares(u){let c=await k(e,`/api/checks/${encodeURIComponent(u)}/shares`);return q(await c.json())},async watch(u,c){let i=c?.pollIntervalMs??Ct,o=i,l=null;for(;;){fe(c?.signal);let p;try{p=await n(u);}catch(h){if(h instanceof L&&(h.status===429||h.status===503)){await J(Math.max((h.retryAfterSec??0)*1e3,o),c?.signal),o=Math.min(o*2,St);continue}throw h}let g=JSON.stringify(p.results.map(h=>[h.task_name,h.status])),m=g!==l;if(m&&(l=g,c?.onProgress?.(p)),p.status==="completed")return p;o=m?i:Math.min(o*2,St),await J(o,c?.signal);}},taskFilesystem:(u,c)=>As(e,`/api/checks/${encodeURIComponent(u)}/tasks/${encodeURIComponent(c)}`)}}function vp(t){let e=pe("auth",t);return {async status(){let r=await(await k(e,"/api/auth/status")).json(),s=r.key??{};return {user_id:r.user_id,email:r.email??null,key:{id:s.id,label:s.label??null,created_at:s.created_at,last_used_at:s.last_used_at??null}}}}}function Sp(t){return {user_id:t.user_id,email:t.email,role:t.role==="owner"?"owner":"member",joined_at:t.joined_at}}function xp(t){return {invite_id:t.invite_id,expires_at:typeof t.expires_at=="string"?t.expires_at:null,max_uses:typeof t.max_uses=="number"?t.max_uses:null,uses:typeof t.uses=="number"?t.uses:0,revoked_at:typeof t.revoked_at=="string"?t.revoked_at:null,created_at:t.created_at,token:t.token}}function An(t){return {org_id:t.org_id,slug:t.slug,display_name:t.display_name,personal:t.personal===true,...t.role==="owner"||t.role==="member"?{role:t.role}:{},created_at:t.created_at}}function Cp(t){let e=t.quota??{},n=t.usage??{},r=s=>typeof s=="number"?s:0;return {...An(t),member_count:r(t.member_count),quota:{max_concurrent_trials:r(e.max_concurrent_trials),max_queued_trials:r(e.max_queued_trials),max_concurrent_imports:r(e.max_concurrent_imports),max_concurrent_analyses:r(e.max_concurrent_analyses),max_concurrent_sessions:r(e.max_concurrent_sessions),monthly_budget_usd:typeof e.monthly_budget_usd=="number"?e.monthly_budget_usd:null,max_concurrent_sandboxes_e2b:r(e.max_concurrent_sandboxes_e2b),max_concurrent_sandboxes_daytona:r(e.max_concurrent_sandboxes_daytona),max_concurrent_sandboxes_modal:r(e.max_concurrent_sandboxes_modal)},usage:{in_flight_trials:r(n.in_flight_trials),queued_trials:r(n.queued_trials),in_flight_imports:r(n.in_flight_imports),in_flight_analyses:r(n.in_flight_analyses),active_sessions:r(n.active_sessions),month_spend_usd:typeof n.month_spend_usd=="number"?n.month_spend_usd:null,month_spend_as_of:typeof n.month_spend_as_of=="string"?n.month_spend_as_of:null}}}function Dn(t){let e=pe("orgs",t);return {async list(){let r=await(await k(e,"/api/orgs")).json();return (Array.isArray(r.items)?r.items:[]).map(s=>An(s))},async get(n){let r=await k(e,`/api/orgs/${encodeURIComponent(n)}`);return Cp(await r.json())},async create(n,r){let s=await k(e,"/api/orgs",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({slug:n,...r?.displayName!==void 0?{display_name:r.displayName}:{}})});return An(await s.json())},async invite(n){let r=await k(e,`/api/orgs/${encodeURIComponent(n)}/invites`,{method:"POST"});return xp(await r.json())},async join(n){let s=await(await k(e,"/api/orgs/invites/accept",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:n})})).json();return {org:An(s.org??{}),already_member:s.already_member===true}},async members(n){let s=await(await k(e,`/api/orgs/${encodeURIComponent(n)}/members`)).json();return (Array.isArray(s.items)?s.items:[]).map(a=>Sp(a))}}}function el(t){try{let e=JSON.parse(t);return e&&typeof e=="object"?e:{value:e}}catch{return {raw:t}}}function Rp(t){let e,n,r,s,a,d,u,c;return {get datasets(){return e??=qa(t)},get agents(){return n??=za(t)},get jobs(){return r??=Wa(t)},get trials(){return s??=Ya(t)},get analyses(){return a??=Qa(t)},get checks(){return d??=Za(t)},get skills(){return u??=Ha(t)},get orgs(){return c??=Dn(t)},meta(){return tl(t)}}}async function tl(t){let e=(t?.baseUrl||process.env.EVOLVE_DASHBOARD_URL||T).replace(/\/$/,""),n=await fetch(`${e}/api/meta`);return n.ok||await Tt(n),await n.json()}async function nl(t,e){try{await Dn({apiKey:e,baseUrl:Se()}).get(t);}catch(n){throw n instanceof L&&n.status===404?new P("org",`Organization ${JSON.stringify(t)} was not found, or you are not a member of it (${n.code}). Check the slug or id passed as org; the session would otherwise be refused by the dashboard and its trace lost.`):n}}function Is(t){return t.delivery==="direct"}var Ln=18181,B="/tmp/evolve-managed-secrets",Pt=`${B}/proxy.py`,Ge=`${B}/config.json`,we=`${B}/ca.crt`,Un=`${B}/ca.key`,Ke=`${B}/ca-bundle.crt`,il=["HTTP_PROXY","HTTPS_PROXY","ALL_PROXY","http_proxy","https_proxy","all_proxy","NO_PROXY","no_proxy","NODE_EXTRA_CA_CERTS","SSL_CERT_FILE","REQUESTS_CA_BUNDLE","CURL_CA_BUNDLE","GIT_SSL_CAINFO"];function ol(){return [...il]}var al=String.raw`#!/usr/bin/env python3
233
233
  import base64
234
234
  import json
235
235
  import os
package/dist/index.d.cts CHANGED
@@ -4,8 +4,8 @@ import { ZodType, z } from 'zod';
4
4
  export { E2BConfig, E2BProvider, createE2BProvider } from '@evolvingmachines/e2b';
5
5
  export { DaytonaConfig, DaytonaProvider, createDaytonaProvider } from '@evolvingmachines/daytona';
6
6
  export { ModalConfig, ModalProvider, createModalProvider } from '@evolvingmachines/modal';
7
- import { U as UsageReading, i as JobVisibility, G as GatewayUsageEvent, j as JobShareRequest, k as JobShares, T as Trial, l as Job, h as TraceEvent, a as TrialAnalysis, C as Check, m as TaskCheck, H as HostedErrorCode, n as DatasetsClient, o as AgentsClient, p as JobsClient, S as SkillsClient, q as TrialsClient, r as AnalysesClient, s as ChecksClient, O as OrgsClient, t as CapabilityDocument, u as HostedClientConfig, v as AuthClient } from './types-B_qmzlMk.cjs';
8
- export { w as AGENT_EFFORT_SUPPORT_VALUES, x as ANALYSIS_ARTIFACT_STREAMS, y as ANALYSIS_STATUSES, z as ActiveDataset, B as AgentArm, E as AgentArmInput, F as AgentCapability, I as AgentDatasetStats, K as AgentEffortSupport, L as AgentInfo, A as AgentInput, M as AgentList, N as AgentModelOption, Q as AgentPage, V as AgentResult, W as AgentSource, X as AgentSourceInput, Y as AgentUpsertInput, Z as AnalysisArtifactStream, _ as AnalysisCheck, $ as AnalysisEvidence, a0 as AnalysisFailure, a1 as AnalysisLabel, a2 as AnalysisList, a3 as AnalysisPage, a4 as AnalysisStatus, a5 as AnalysisTranscript, a6 as AnalysisTranscriptOptions, a7 as AnalyzeConfig, a8 as AnalyzeConfigInput, a9 as AnalyzeDefaults, aa as ApiKey, ab as AttemptPhase, ac as AuthStatus, ad as Awaitable, ae as CHECK_STATUSES, af as CheckDefaults, ag as CheckLabel, ah as CheckRow, ai as CheckRowList, aj as CheckRowPage, ak as CheckTaskTally, al as CompareCell, am as CompareCoverage, an as CompareJobAggregate, ao as CompareResponse, ap as CompareTaskRow, aq as Dataset, b as DatasetImport, ar as DatasetImportFailure, as as DatasetImportList, at as DatasetImportPage, e as DatasetImportProgress, au as DatasetImportStatus, av as DatasetList, aw as DatasetPage, ax as DatasetPatch, ay as DatasetPreflight, az as DatasetRef, aA as DatasetSelector, aB as DatasetSource, D as DatasetVersion, aC as DatasetVersionArchiveSource, aD as DatasetVersionArchiveUrlSource, aE as DatasetVersionGitSource, aF as DatasetVersionHubSource, aG as DatasetVersionSource, aH as DatasetVersionState, aI as DownloadDatasetOptions, aJ as DownloadJobOptions, aK as EVAL_SANDBOX_PROVIDERS, aL as EvalAgent, aM as EvalModelInfo, aN as EvalSandboxProvider, aO as EvalStepResult, aP as ExceptionInfo, aQ as FilesystemArchiveOptions, aR as FilesystemBox, aS as FilesystemCapture, aT as FilesystemChange, aU as FilesystemChanges, aV as FilesystemChangesOptions, aW as FilesystemEntry, aX as FilesystemListOptions, aY as FilesystemListing, aZ as FilesystemReadOptions, a_ as FilesystemSearchHit, a$ as FilesystemSearchOptions, b0 as FilesystemSearchResult, b1 as FilesystemSource, b2 as FilesystemState, b3 as FilesystemStatus, b4 as FilesystemStreamEvent, b5 as FilesystemStreamOptions, b6 as FilesystemWatchResult, b7 as GATEWAY_TRACE_SEQ_BASE, b8 as GatewayUsage, b9 as GetDatasetOptions, ba as GrepJobOptions, bb as HOSTED_ERROR_CODES, bc as ImportPhase, bd as ImportPhaseProgress, be as ImportWarning, bf as InfraFailureSignature, bg as JOB_LIST_KINDS, bh as JOB_LIST_SCOPES, bi as JobAnalysisStats, J as JobCreate, bj as JobDeleteResult, c as JobEvent, bk as JobFailure, bl as JobGrepGroup, bm as JobGrepPage, bn as JobImport, bo as JobImportFailure, bp as JobImportList, bq as JobImportPage, br as JobImportPhaseName, bs as JobImportPhaseProgress, bt as JobImportProgress, bu as JobImportSkippedTrial, bv as JobImportSource, bw as JobList, bx as JobListItem, by as JobListItemList, bz as JobListItemPage, bA as JobListKind, bB as JobListScope, bC as JobPage, bD as JobShareEmail, bE as JobShareLink, bF as JobStats, bG as JobStatus, bH as JobTaskLink, bI as JobTaskRollup, bJ as JobTaskRollupList, bK as JobTaskRollupPage, bL as JobViewer, bM as JobWatch, bN as JudgeResult, bO as ListAgentsOptions, bP as ListAnalysesOptions, bQ as ListDatasetsOptions, bR as ListImportsOptions, bS as ListJobImportsOptions, bT as ListJobTasksOptions, bU as ListJobsOptions, bV as ListSkillsOptions, bW as ListTrialFilesOptions, bX as ListTrialsOptions, bY as ManagedProviderCapability, bZ as OrgInvite, b_ as OrgInviteCreated, b$ as OrgJoined, c0 as OrgMember, c1 as OrgQuota, c2 as OrgRole, c3 as OrgUsage, c4 as Organization, c5 as OrganizationDetail, c6 as Page, c7 as PageOptions, c8 as PassAtKGroup, c9 as PassAtKPoint, ca as PreflightDatasetInput, cb as PreflightDeferredCheck, cc as PreflightManifestVerdict, cd as PreflightTaskVerdict, ce as ProviderCapability, P as PublishDatasetInput, cf as PublishDatasetOptions, cg as RegradeRequest, ch as ResumeRequest, ci as RetryRequest, R as Rubric, cj as RubricCriterion, ck as RunFilesystem, cl as SANDBOX_LOG_STREAMS, cm as SandboxLogEvent, cn as SandboxLogLine, co as SandboxLogLines, cp as SandboxLogOptions, cq as SandboxLogStream, cr as SandboxProcs, cs as SkillLock, ct as SkillUpload, cu as SkillUploadList, cv as SkillUploadPage, cw as SourceJob, cx as SpendSource, cy as StartJobOptions, cz as StatusVocabulary, cA as StopResponse, cB as TASK_LINKED_BY, cC as TASK_LINK_REASONS, cD as TRIAL_ARTIFACT_STREAMS, cE as TRIAL_STATUSES, cF as Task, cG as TaskCheckTranscript, cH as TaskLinkReason, cI as TaskLinkedBy, cJ as TaskNote, cK as TaskPackageFiles, cL as TaskPackageFilesystemStatus, cM as TaskProviderVerdict, cN as TimingInfo, cO as TraceEventPage, cP as TraceOptions, cQ as TrialArtifactStream, cR as TrialCounts, cS as TrialFile, cT as TrialFilePage, cU as TrialFileRange, cV as TrialGpuCost, cW as TrialList, cX as TrialPage, cY as TrialStatus, cZ as TrialStatusTally, c_ as TrialTaskLink, c$ as TrialUploadProvenance, d0 as UploadJobOptions, d1 as UploadProvenance, d2 as UploadSkillOptions, d3 as UpstreamStatus, d4 as VerifierEnvironmentMode, d5 as VerifierResult, d6 as WatchAnalysisOptions, d7 as WatchImportOptions, d8 as WatchJobImportOptions, d9 as WatchJobOptions, da as gatewayUsageOf, db as isHostedErrorCode, dc as passAtK } from './types-B_qmzlMk.cjs';
7
+ import { U as UsageReading, i as JobVisibility, G as GatewayUsageEvent, j as JobShareRequest, k as JobShares, T as Trial, l as Job, h as TraceEvent, a as TrialAnalysis, C as Check, m as TaskCheck, H as HostedErrorCode, n as DatasetsClient, o as AgentsClient, p as JobsClient, S as SkillsClient, q as TrialsClient, r as AnalysesClient, s as ChecksClient, O as OrgsClient, t as CapabilityDocument, u as HostedClientConfig, v as AuthClient } from './types-84M4J_Vm.cjs';
8
+ export { w as AGENT_EFFORT_SUPPORT_VALUES, x as ANALYSIS_ARTIFACT_STREAMS, y as ANALYSIS_STATUSES, z as ActiveDataset, B as AgentArm, E as AgentArmInput, F as AgentCapability, I as AgentDatasetStats, K as AgentEffortSupport, L as AgentInfo, A as AgentInput, M as AgentList, N as AgentModelOption, Q as AgentPage, V as AgentResult, W as AgentSource, X as AgentSourceInput, Y as AgentUpsertInput, Z as AnalysisArtifactStream, _ as AnalysisCheck, $ as AnalysisEvidence, a0 as AnalysisFailure, a1 as AnalysisList, a2 as AnalysisPage, a3 as AnalysisStatus, a4 as AnalysisTranscript, a5 as AnalysisTranscriptOptions, a6 as AnalyzeConfig, a7 as AnalyzeConfigInput, a8 as AnalyzeDefaults, a9 as ApiKey, aa as AttemptPhase, ab as AuthStatus, ac as Awaitable, ad as CHECK_STATUSES, ae as CheckDefaults, af as CheckRow, ag as CheckRowList, ah as CheckRowPage, ai as CheckTaskTally, aj as CompareCell, ak as CompareCoverage, al as CompareJobAggregate, am as CompareResponse, an as CompareTaskRow, ao as Dataset, b as DatasetImport, ap as DatasetImportFailure, aq as DatasetImportList, ar as DatasetImportPage, e as DatasetImportProgress, as as DatasetImportStatus, at as DatasetList, au as DatasetPage, av as DatasetPatch, aw as DatasetPreflight, ax as DatasetRef, ay as DatasetSelector, az as DatasetSource, D as DatasetVersion, aA as DatasetVersionArchiveSource, aB as DatasetVersionArchiveUrlSource, aC as DatasetVersionGitSource, aD as DatasetVersionHubSource, aE as DatasetVersionSource, aF as DatasetVersionState, aG as DownloadDatasetOptions, aH as DownloadJobOptions, aI as EVAL_SANDBOX_PROVIDERS, aJ as EvalAgent, aK as EvalModelInfo, aL as EvalSandboxProvider, aM as EvalStepResult, aN as ExceptionInfo, aO as FilesystemArchiveOptions, aP as FilesystemBox, aQ as FilesystemCapture, aR as FilesystemChange, aS as FilesystemChanges, aT as FilesystemChangesOptions, aU as FilesystemEntry, aV as FilesystemListOptions, aW as FilesystemListing, aX as FilesystemReadOptions, aY as FilesystemSearchHit, aZ as FilesystemSearchOptions, a_ as FilesystemSearchResult, a$ as FilesystemSource, b0 as FilesystemState, b1 as FilesystemStatus, b2 as FilesystemStreamEvent, b3 as FilesystemStreamOptions, b4 as FilesystemWatchResult, b5 as GATEWAY_TRACE_SEQ_BASE, b6 as GatewayUsage, b7 as GetDatasetOptions, b8 as GrepJobOptions, b9 as HOSTED_ERROR_CODES, ba as ImportPhase, bb as ImportPhaseProgress, bc as ImportWarning, bd as InfraFailureSignature, be as JOB_LIST_KINDS, bf as JOB_LIST_SCOPES, bg as JobAnalysisStats, J as JobCreate, bh as JobDeleteResult, c as JobEvent, bi as JobFailure, bj as JobGrepGroup, bk as JobGrepPage, bl as JobImport, bm as JobImportFailure, bn as JobImportList, bo as JobImportPage, bp as JobImportPhaseName, bq as JobImportPhaseProgress, br as JobImportProgress, bs as JobImportSkippedTrial, bt as JobImportSource, bu as JobList, bv as JobListItem, bw as JobListItemList, bx as JobListItemPage, by as JobListKind, bz as JobListScope, bA as JobPage, bB as JobShareEmail, bC as JobShareLink, bD as JobStats, bE as JobStatus, bF as JobTaskLink, bG as JobTaskRollup, bH as JobTaskRollupList, bI as JobTaskRollupPage, bJ as JobViewer, bK as JobWatch, bL as JudgeResult, bM as ListAgentsOptions, bN as ListAnalysesOptions, bO as ListDatasetsOptions, bP as ListImportsOptions, bQ as ListJobImportsOptions, bR as ListJobTasksOptions, bS as ListJobsOptions, bT as ListSkillsOptions, bU as ListTrialFilesOptions, bV as ListTrialsOptions, bW as ManagedProviderCapability, bX as OrgInvite, bY as OrgInviteCreated, bZ as OrgJoined, b_ as OrgMember, b$ as OrgQuota, c0 as OrgRole, c1 as OrgUsage, c2 as Organization, c3 as OrganizationDetail, c4 as Page, c5 as PageOptions, c6 as PassAtKGroup, c7 as PassAtKPoint, c8 as PreflightDatasetInput, c9 as PreflightDeferredCheck, ca as PreflightManifestVerdict, cb as PreflightTaskVerdict, cc as ProviderCapability, P as PublishDatasetInput, cd as PublishDatasetOptions, ce as RegradeRequest, cf as ResumeRequest, cg as RetryRequest, R as Rubric, ch as RubricCriterion, ci as RunFilesystem, cj as SANDBOX_LOG_STREAMS, ck as SandboxLogEvent, cl as SandboxLogLine, cm as SandboxLogLines, cn as SandboxLogOptions, co as SandboxLogStream, cp as SandboxProcs, cq as SkillLock, cr as SkillUpload, cs as SkillUploadList, ct as SkillUploadPage, cu as SourceJob, cv as SpendSource, cw as StartJobOptions, cx as StatusVocabulary, cy as StopResponse, cz as TASK_LINKED_BY, cA as TASK_LINK_REASONS, cB as TRIAL_ARTIFACT_STREAMS, cC as TRIAL_STATUSES, cD as Task, cE as TaskCheckTranscript, cF as TaskLinkReason, cG as TaskLinkedBy, cH as TaskNote, cI as TaskPackageFiles, cJ as TaskPackageFilesystemStatus, cK as TaskProviderVerdict, cL as TimingInfo, cM as TraceEventPage, cN as TraceOptions, cO as TrialArtifactStream, cP as TrialCounts, cQ as TrialFile, cR as TrialFilePage, cS as TrialFileRange, cT as TrialGpuCost, cU as TrialList, cV as TrialPage, cW as TrialStatus, cX as TrialStatusTally, cY as TrialTaskLink, cZ as TrialUploadProvenance, c_ as UploadJobOptions, c$ as UploadProvenance, d0 as UploadSkillOptions, d1 as UpstreamStatus, d2 as VerifierEnvironmentMode, d3 as VerifierResult, d4 as WatchAnalysisOptions, d5 as WatchImportOptions, d6 as WatchJobImportOptions, d7 as WatchJobOptions, d8 as gatewayUsageOf, d9 as isHostedErrorCode, da as passAtK } from './types-84M4J_Vm.cjs';
9
9
 
10
10
  /**
11
11
  * The one skills resolver.
@@ -4804,7 +4804,7 @@ declare function assembleTrialTree(parts: TrialTreeParts): Record<string, string
4804
4804
  /**
4805
4805
  * The analysis run's evolve.json: which run this analysis read (the
4806
4806
  * analyzed trial, its job, its task), the analyzer's model and status,
4807
- * which user downloaded it, and the analyzer's own meter — the verdict's
4807
+ * which user downloaded it, and the analyzer's own meter — the result's
4808
4808
  * one-home `usage` reading restated (never a second meter).
4809
4809
  */
4810
4810
  declare function analysisEvolveRecord(analysis: TrialAnalysis, userId: string | null): Record<string, unknown>;
@@ -5129,7 +5129,7 @@ interface HostedEvolve {
5129
5129
  readonly skills: SkillsClient;
5130
5130
  /** Globally addressable trials: get, trace, artifact, regrade, stop. */
5131
5131
  readonly trials: TrialsClient;
5132
- /** Analysis runs: verdict, the analyzer's own transcript, stored artifacts. */
5132
+ /** Analysis runs: the result, the analyzer's own transcript, stored artifacts. */
5133
5133
  readonly analyses: AnalysesClient;
5134
5134
  /** Task quality checks (Harbor's `harbor check`): create, get, list, watch. */
5135
5135
  readonly checks: ChecksClient;
package/dist/index.d.ts CHANGED
@@ -4,8 +4,8 @@ import { ZodType, z } from 'zod';
4
4
  export { E2BConfig, E2BProvider, createE2BProvider } from '@evolvingmachines/e2b';
5
5
  export { DaytonaConfig, DaytonaProvider, createDaytonaProvider } from '@evolvingmachines/daytona';
6
6
  export { ModalConfig, ModalProvider, createModalProvider } from '@evolvingmachines/modal';
7
- import { U as UsageReading, i as JobVisibility, G as GatewayUsageEvent, j as JobShareRequest, k as JobShares, T as Trial, l as Job, h as TraceEvent, a as TrialAnalysis, C as Check, m as TaskCheck, H as HostedErrorCode, n as DatasetsClient, o as AgentsClient, p as JobsClient, S as SkillsClient, q as TrialsClient, r as AnalysesClient, s as ChecksClient, O as OrgsClient, t as CapabilityDocument, u as HostedClientConfig, v as AuthClient } from './types-B_qmzlMk.js';
8
- export { w as AGENT_EFFORT_SUPPORT_VALUES, x as ANALYSIS_ARTIFACT_STREAMS, y as ANALYSIS_STATUSES, z as ActiveDataset, B as AgentArm, E as AgentArmInput, F as AgentCapability, I as AgentDatasetStats, K as AgentEffortSupport, L as AgentInfo, A as AgentInput, M as AgentList, N as AgentModelOption, Q as AgentPage, V as AgentResult, W as AgentSource, X as AgentSourceInput, Y as AgentUpsertInput, Z as AnalysisArtifactStream, _ as AnalysisCheck, $ as AnalysisEvidence, a0 as AnalysisFailure, a1 as AnalysisLabel, a2 as AnalysisList, a3 as AnalysisPage, a4 as AnalysisStatus, a5 as AnalysisTranscript, a6 as AnalysisTranscriptOptions, a7 as AnalyzeConfig, a8 as AnalyzeConfigInput, a9 as AnalyzeDefaults, aa as ApiKey, ab as AttemptPhase, ac as AuthStatus, ad as Awaitable, ae as CHECK_STATUSES, af as CheckDefaults, ag as CheckLabel, ah as CheckRow, ai as CheckRowList, aj as CheckRowPage, ak as CheckTaskTally, al as CompareCell, am as CompareCoverage, an as CompareJobAggregate, ao as CompareResponse, ap as CompareTaskRow, aq as Dataset, b as DatasetImport, ar as DatasetImportFailure, as as DatasetImportList, at as DatasetImportPage, e as DatasetImportProgress, au as DatasetImportStatus, av as DatasetList, aw as DatasetPage, ax as DatasetPatch, ay as DatasetPreflight, az as DatasetRef, aA as DatasetSelector, aB as DatasetSource, D as DatasetVersion, aC as DatasetVersionArchiveSource, aD as DatasetVersionArchiveUrlSource, aE as DatasetVersionGitSource, aF as DatasetVersionHubSource, aG as DatasetVersionSource, aH as DatasetVersionState, aI as DownloadDatasetOptions, aJ as DownloadJobOptions, aK as EVAL_SANDBOX_PROVIDERS, aL as EvalAgent, aM as EvalModelInfo, aN as EvalSandboxProvider, aO as EvalStepResult, aP as ExceptionInfo, aQ as FilesystemArchiveOptions, aR as FilesystemBox, aS as FilesystemCapture, aT as FilesystemChange, aU as FilesystemChanges, aV as FilesystemChangesOptions, aW as FilesystemEntry, aX as FilesystemListOptions, aY as FilesystemListing, aZ as FilesystemReadOptions, a_ as FilesystemSearchHit, a$ as FilesystemSearchOptions, b0 as FilesystemSearchResult, b1 as FilesystemSource, b2 as FilesystemState, b3 as FilesystemStatus, b4 as FilesystemStreamEvent, b5 as FilesystemStreamOptions, b6 as FilesystemWatchResult, b7 as GATEWAY_TRACE_SEQ_BASE, b8 as GatewayUsage, b9 as GetDatasetOptions, ba as GrepJobOptions, bb as HOSTED_ERROR_CODES, bc as ImportPhase, bd as ImportPhaseProgress, be as ImportWarning, bf as InfraFailureSignature, bg as JOB_LIST_KINDS, bh as JOB_LIST_SCOPES, bi as JobAnalysisStats, J as JobCreate, bj as JobDeleteResult, c as JobEvent, bk as JobFailure, bl as JobGrepGroup, bm as JobGrepPage, bn as JobImport, bo as JobImportFailure, bp as JobImportList, bq as JobImportPage, br as JobImportPhaseName, bs as JobImportPhaseProgress, bt as JobImportProgress, bu as JobImportSkippedTrial, bv as JobImportSource, bw as JobList, bx as JobListItem, by as JobListItemList, bz as JobListItemPage, bA as JobListKind, bB as JobListScope, bC as JobPage, bD as JobShareEmail, bE as JobShareLink, bF as JobStats, bG as JobStatus, bH as JobTaskLink, bI as JobTaskRollup, bJ as JobTaskRollupList, bK as JobTaskRollupPage, bL as JobViewer, bM as JobWatch, bN as JudgeResult, bO as ListAgentsOptions, bP as ListAnalysesOptions, bQ as ListDatasetsOptions, bR as ListImportsOptions, bS as ListJobImportsOptions, bT as ListJobTasksOptions, bU as ListJobsOptions, bV as ListSkillsOptions, bW as ListTrialFilesOptions, bX as ListTrialsOptions, bY as ManagedProviderCapability, bZ as OrgInvite, b_ as OrgInviteCreated, b$ as OrgJoined, c0 as OrgMember, c1 as OrgQuota, c2 as OrgRole, c3 as OrgUsage, c4 as Organization, c5 as OrganizationDetail, c6 as Page, c7 as PageOptions, c8 as PassAtKGroup, c9 as PassAtKPoint, ca as PreflightDatasetInput, cb as PreflightDeferredCheck, cc as PreflightManifestVerdict, cd as PreflightTaskVerdict, ce as ProviderCapability, P as PublishDatasetInput, cf as PublishDatasetOptions, cg as RegradeRequest, ch as ResumeRequest, ci as RetryRequest, R as Rubric, cj as RubricCriterion, ck as RunFilesystem, cl as SANDBOX_LOG_STREAMS, cm as SandboxLogEvent, cn as SandboxLogLine, co as SandboxLogLines, cp as SandboxLogOptions, cq as SandboxLogStream, cr as SandboxProcs, cs as SkillLock, ct as SkillUpload, cu as SkillUploadList, cv as SkillUploadPage, cw as SourceJob, cx as SpendSource, cy as StartJobOptions, cz as StatusVocabulary, cA as StopResponse, cB as TASK_LINKED_BY, cC as TASK_LINK_REASONS, cD as TRIAL_ARTIFACT_STREAMS, cE as TRIAL_STATUSES, cF as Task, cG as TaskCheckTranscript, cH as TaskLinkReason, cI as TaskLinkedBy, cJ as TaskNote, cK as TaskPackageFiles, cL as TaskPackageFilesystemStatus, cM as TaskProviderVerdict, cN as TimingInfo, cO as TraceEventPage, cP as TraceOptions, cQ as TrialArtifactStream, cR as TrialCounts, cS as TrialFile, cT as TrialFilePage, cU as TrialFileRange, cV as TrialGpuCost, cW as TrialList, cX as TrialPage, cY as TrialStatus, cZ as TrialStatusTally, c_ as TrialTaskLink, c$ as TrialUploadProvenance, d0 as UploadJobOptions, d1 as UploadProvenance, d2 as UploadSkillOptions, d3 as UpstreamStatus, d4 as VerifierEnvironmentMode, d5 as VerifierResult, d6 as WatchAnalysisOptions, d7 as WatchImportOptions, d8 as WatchJobImportOptions, d9 as WatchJobOptions, da as gatewayUsageOf, db as isHostedErrorCode, dc as passAtK } from './types-B_qmzlMk.js';
7
+ import { U as UsageReading, i as JobVisibility, G as GatewayUsageEvent, j as JobShareRequest, k as JobShares, T as Trial, l as Job, h as TraceEvent, a as TrialAnalysis, C as Check, m as TaskCheck, H as HostedErrorCode, n as DatasetsClient, o as AgentsClient, p as JobsClient, S as SkillsClient, q as TrialsClient, r as AnalysesClient, s as ChecksClient, O as OrgsClient, t as CapabilityDocument, u as HostedClientConfig, v as AuthClient } from './types-84M4J_Vm.js';
8
+ export { w as AGENT_EFFORT_SUPPORT_VALUES, x as ANALYSIS_ARTIFACT_STREAMS, y as ANALYSIS_STATUSES, z as ActiveDataset, B as AgentArm, E as AgentArmInput, F as AgentCapability, I as AgentDatasetStats, K as AgentEffortSupport, L as AgentInfo, A as AgentInput, M as AgentList, N as AgentModelOption, Q as AgentPage, V as AgentResult, W as AgentSource, X as AgentSourceInput, Y as AgentUpsertInput, Z as AnalysisArtifactStream, _ as AnalysisCheck, $ as AnalysisEvidence, a0 as AnalysisFailure, a1 as AnalysisList, a2 as AnalysisPage, a3 as AnalysisStatus, a4 as AnalysisTranscript, a5 as AnalysisTranscriptOptions, a6 as AnalyzeConfig, a7 as AnalyzeConfigInput, a8 as AnalyzeDefaults, a9 as ApiKey, aa as AttemptPhase, ab as AuthStatus, ac as Awaitable, ad as CHECK_STATUSES, ae as CheckDefaults, af as CheckRow, ag as CheckRowList, ah as CheckRowPage, ai as CheckTaskTally, aj as CompareCell, ak as CompareCoverage, al as CompareJobAggregate, am as CompareResponse, an as CompareTaskRow, ao as Dataset, b as DatasetImport, ap as DatasetImportFailure, aq as DatasetImportList, ar as DatasetImportPage, e as DatasetImportProgress, as as DatasetImportStatus, at as DatasetList, au as DatasetPage, av as DatasetPatch, aw as DatasetPreflight, ax as DatasetRef, ay as DatasetSelector, az as DatasetSource, D as DatasetVersion, aA as DatasetVersionArchiveSource, aB as DatasetVersionArchiveUrlSource, aC as DatasetVersionGitSource, aD as DatasetVersionHubSource, aE as DatasetVersionSource, aF as DatasetVersionState, aG as DownloadDatasetOptions, aH as DownloadJobOptions, aI as EVAL_SANDBOX_PROVIDERS, aJ as EvalAgent, aK as EvalModelInfo, aL as EvalSandboxProvider, aM as EvalStepResult, aN as ExceptionInfo, aO as FilesystemArchiveOptions, aP as FilesystemBox, aQ as FilesystemCapture, aR as FilesystemChange, aS as FilesystemChanges, aT as FilesystemChangesOptions, aU as FilesystemEntry, aV as FilesystemListOptions, aW as FilesystemListing, aX as FilesystemReadOptions, aY as FilesystemSearchHit, aZ as FilesystemSearchOptions, a_ as FilesystemSearchResult, a$ as FilesystemSource, b0 as FilesystemState, b1 as FilesystemStatus, b2 as FilesystemStreamEvent, b3 as FilesystemStreamOptions, b4 as FilesystemWatchResult, b5 as GATEWAY_TRACE_SEQ_BASE, b6 as GatewayUsage, b7 as GetDatasetOptions, b8 as GrepJobOptions, b9 as HOSTED_ERROR_CODES, ba as ImportPhase, bb as ImportPhaseProgress, bc as ImportWarning, bd as InfraFailureSignature, be as JOB_LIST_KINDS, bf as JOB_LIST_SCOPES, bg as JobAnalysisStats, J as JobCreate, bh as JobDeleteResult, c as JobEvent, bi as JobFailure, bj as JobGrepGroup, bk as JobGrepPage, bl as JobImport, bm as JobImportFailure, bn as JobImportList, bo as JobImportPage, bp as JobImportPhaseName, bq as JobImportPhaseProgress, br as JobImportProgress, bs as JobImportSkippedTrial, bt as JobImportSource, bu as JobList, bv as JobListItem, bw as JobListItemList, bx as JobListItemPage, by as JobListKind, bz as JobListScope, bA as JobPage, bB as JobShareEmail, bC as JobShareLink, bD as JobStats, bE as JobStatus, bF as JobTaskLink, bG as JobTaskRollup, bH as JobTaskRollupList, bI as JobTaskRollupPage, bJ as JobViewer, bK as JobWatch, bL as JudgeResult, bM as ListAgentsOptions, bN as ListAnalysesOptions, bO as ListDatasetsOptions, bP as ListImportsOptions, bQ as ListJobImportsOptions, bR as ListJobTasksOptions, bS as ListJobsOptions, bT as ListSkillsOptions, bU as ListTrialFilesOptions, bV as ListTrialsOptions, bW as ManagedProviderCapability, bX as OrgInvite, bY as OrgInviteCreated, bZ as OrgJoined, b_ as OrgMember, b$ as OrgQuota, c0 as OrgRole, c1 as OrgUsage, c2 as Organization, c3 as OrganizationDetail, c4 as Page, c5 as PageOptions, c6 as PassAtKGroup, c7 as PassAtKPoint, c8 as PreflightDatasetInput, c9 as PreflightDeferredCheck, ca as PreflightManifestVerdict, cb as PreflightTaskVerdict, cc as ProviderCapability, P as PublishDatasetInput, cd as PublishDatasetOptions, ce as RegradeRequest, cf as ResumeRequest, cg as RetryRequest, R as Rubric, ch as RubricCriterion, ci as RunFilesystem, cj as SANDBOX_LOG_STREAMS, ck as SandboxLogEvent, cl as SandboxLogLine, cm as SandboxLogLines, cn as SandboxLogOptions, co as SandboxLogStream, cp as SandboxProcs, cq as SkillLock, cr as SkillUpload, cs as SkillUploadList, ct as SkillUploadPage, cu as SourceJob, cv as SpendSource, cw as StartJobOptions, cx as StatusVocabulary, cy as StopResponse, cz as TASK_LINKED_BY, cA as TASK_LINK_REASONS, cB as TRIAL_ARTIFACT_STREAMS, cC as TRIAL_STATUSES, cD as Task, cE as TaskCheckTranscript, cF as TaskLinkReason, cG as TaskLinkedBy, cH as TaskNote, cI as TaskPackageFiles, cJ as TaskPackageFilesystemStatus, cK as TaskProviderVerdict, cL as TimingInfo, cM as TraceEventPage, cN as TraceOptions, cO as TrialArtifactStream, cP as TrialCounts, cQ as TrialFile, cR as TrialFilePage, cS as TrialFileRange, cT as TrialGpuCost, cU as TrialList, cV as TrialPage, cW as TrialStatus, cX as TrialStatusTally, cY as TrialTaskLink, cZ as TrialUploadProvenance, c_ as UploadJobOptions, c$ as UploadProvenance, d0 as UploadSkillOptions, d1 as UpstreamStatus, d2 as VerifierEnvironmentMode, d3 as VerifierResult, d4 as WatchAnalysisOptions, d5 as WatchImportOptions, d6 as WatchJobImportOptions, d7 as WatchJobOptions, d8 as gatewayUsageOf, d9 as isHostedErrorCode, da as passAtK } from './types-84M4J_Vm.js';
9
9
 
10
10
  /**
11
11
  * The one skills resolver.
@@ -4804,7 +4804,7 @@ declare function assembleTrialTree(parts: TrialTreeParts): Record<string, string
4804
4804
  /**
4805
4805
  * The analysis run's evolve.json: which run this analysis read (the
4806
4806
  * analyzed trial, its job, its task), the analyzer's model and status,
4807
- * which user downloaded it, and the analyzer's own meter — the verdict's
4807
+ * which user downloaded it, and the analyzer's own meter — the result's
4808
4808
  * one-home `usage` reading restated (never a second meter).
4809
4809
  */
4810
4810
  declare function analysisEvolveRecord(analysis: TrialAnalysis, userId: string | null): Record<string, unknown>;
@@ -5129,7 +5129,7 @@ interface HostedEvolve {
5129
5129
  readonly skills: SkillsClient;
5130
5130
  /** Globally addressable trials: get, trace, artifact, regrade, stop. */
5131
5131
  readonly trials: TrialsClient;
5132
- /** Analysis runs: verdict, the analyzer's own transcript, stored artifacts. */
5132
+ /** Analysis runs: the result, the analyzer's own transcript, stored artifacts. */
5133
5133
  readonly analyses: AnalysesClient;
5134
5134
  /** Task quality checks (Harbor's `harbor check`): create, get, list, watch. */
5135
5135
  readonly checks: ChecksClient;
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import {w,o,p,n,Da,Ha as Ha$1,g,s,m,h,c,e,d,f,i,j as j$1,k,l,r,q as q$1,a,t,Ja,Ba,Ea as Ea$1,Fa,Ia as Ia$1,ya as ya$1,za,Ca,Aa,Ka,La,Ma,xa as xa$1,Na,Ga,v,u,x,ua as ua$1,b,ha as ha$1,y,z as z$2,A,B as B$1}from'./chunk-DK2MGUPB.js';export{S as AGENT_EFFORT_SUPPORT_VALUES,P as ANALYSIS_ARTIFACT_STREAMS,G as ANALYSIS_STATUSES,H as CHECK_STATUSES,X as DEFAULT_HARNESS_TRIAL_LAYOUT,D as EVAL_SANDBOX_PROVIDERS,ha as EvolveApiError,ka as EvolveDigestMismatchError,la as EvolveIncompleteDownloadError,L as GATEWAY_TRACE_SEQ_BASE,Y as HARNESS_TRIAL_LAYOUTS,Q as HOSTED_ERROR_CODES,ja as ImportSettleError,F as JOB_LIST_KINDS,E as JOB_LIST_SCOPES,c as MANAGED_SANDBOX_PROVIDERS,ia as NoActiveVersionError,O as SANDBOX_LOG_STREAMS,J as TASK_LINKED_BY,K as TASK_LINK_REASONS,N as TRIAL_ARTIFACT_STREAMS,C as TRIAL_STATUSES,na as agents,ra as analyses,ea as analysisEvolveRecord,da as assembleTrialTree,ta as auth,ga as checkEvolveRecord,sa as checks,ma as datasets,M as gatewayUsageOf,aa as harborCopyPath,Z as harnessTrialLayout,_ as homeRelativePath,va as hosted,R as isHostedErrorCode,ca as jobEvolveRecord,pa as jobs,Da as managedSecrets,wa as meta,ua as orgs,I as passAtK,$ as placeHomeObject,Oa as sessions,oa as skills,fa as taskCheckEvolveRecord,ba as trialEvolveRecord,qa as trials}from'./chunk-DK2MGUPB.js';import'./chunk-HQJI3HHU.js';export{b as EvolveUploadTimeoutError}from'./chunk-5GVMBEYI.js';import {EventEmitter}from'events';import Kl from'ajv';import {randomBytes,randomUUID,publicEncrypt,constants,createHash}from'crypto';import {stringify,parse}from'smol-toml';import {execFile,exec}from'child_process';import {promisify}from'util';import {mkdir,appendFile,rm,readFile,writeFile,unlink,copyFile,readdir,mkdtemp,rename,stat}from'fs/promises';import {homedir,tmpdir}from'os';import*as K from'path';import {join,basename,posix,dirname,isAbsolute,normalize,resolve,relative}from'path';import xa from'zod-to-json-schema';import*as j from'fs';import {createWriteStream}from'fs';import {z as z$1}from'zod';export{E2BProvider,createE2BProvider}from'@evolvingmachines/e2b';export{DaytonaProvider,createDaytonaProvider}from'@evolvingmachines/daytona';export{ModalProvider,createModalProvider}from'@evolvingmachines/modal';var vo={CLAUDE:"claude",CODEX:"codex",GEMINI:"gemini",QWEN:"qwen",KIMI:"kimi",OPENCODE:"opencode",DROID:"droid"},Gt=["no-internet","pinned-context"],Jt={strict:{coerceTypes:false,removeAdditional:false,useDefaults:false,allErrors:true},loose:{coerceTypes:"array",removeAdditional:false,useDefaults:true,allErrors:true}},bo=["timeoutMs","background","from","checkpointComment","resume"];var Pr=["off","minimal","low","medium","high","xhigh","max","thinking"],_r=2e5,Ir=["off","minimal","medium","thinking"],Or="medium";function ko(t){return t==="none"?{efforts:[],defaultEffort:null}:{efforts:t==="binary"?Ir:Pr,defaultEffort:Or}}function Ar(t,e){return e??U[t]?.defaultReasoningEffort}function Te(t){return t!=="off"&&t!=="none"&&t!=="minimal"&&t!=="no-thinking"}function zt(t){if(!(t==="off"||t==="none"||t==="no-thinking"))return !t||t==="thinking"||t==="medium"?"medium":t==="low"||t==="minimal"?"minimal":t==="xhigh"?"max":t}function So(t){let e=zt(t);return e?` --variant ${e} --thinking`:""}var U={claude:{image:"evolve-all",apiKeyEnv:"ANTHROPIC_API_KEY",effortSupport:"level",oauthEnv:"CLAUDE_CODE_OAUTH_TOKEN",baseUrlEnv:"ANTHROPIC_BASE_URL",customHeadersEnv:"ANTHROPIC_CUSTOM_HEADERS",defaultModel:"opus",defaultReasoningEffort:"high",models:[{alias:"fable",modelId:"claude-fable-5-1",description:"Highest capability, long-horizon agentic work"},{alias:"opus",modelId:"claude-opus-5",description:"Complex reasoning, R&D, architecting"},{alias:"sonnet",modelId:"claude-sonnet-5",description:"Daily coding, features, tests"},{alias:"haiku",modelId:"claude-haiku-4-5-20251001",description:"Quick tasks, syntax correction"},{alias:"opus[1m]",modelId:"opus[1m]",description:"Complex reasoning with 1M context window"},{alias:"sonnet[1m]",modelId:"sonnet[1m]",description:"Daily coding with 1M context window"},{alias:"glm-5.3",modelId:"glm-5.3",description:"Zhipu GLM-5.3 via the Evolve gateway"},{alias:"glm-5.3-flash",modelId:"glm-5.3-flash",description:"Zhipu GLM-5.3 Flash via the Evolve gateway"},{alias:"openrouter/deepseek/deepseek-v4.1-flash",modelId:"openrouter/deepseek/deepseek-v4.1-flash",description:"DeepSeek V4.1 Flash via OpenRouter"},{alias:"fireworks/deepseek-v4.1-flash",modelId:"fireworks/deepseek-v4.1-flash",description:"DeepSeek V4.1 Flash via Fireworks"}],systemPromptFile:"CLAUDE.md",mcpConfig:{settingsDir:"~/.claude",filename:"settings.json",format:"json",projectConfig:true},nativeConfig:{format:"json",path:"~/.claude/evolve-user-settings.json",delivery:"settings-flag"},presets:{"no-internet":{configStamp:{permissions:{deny:["WebSearch","WebFetch"]}}},"pinned-context":{configStamp:{autoCompactEnabled:true,autoCompactWindow:_r}}},skillsConfig:{targetDir:"~/.claude/skills"},buildCommand:({prompt:t,model:e,isResume:n,reasoningEffort:r,nativeConfigPath:i})=>{let s=n?"--continue ":"",d=r?` --effort ${r}`:"",u=i?` --settings ${i}`:"";return `echo "${t}" | claude -p ${s}--model ${e}${d}${u} --output-format stream-json --verbose --dangerously-skip-permissions`}},codex:{image:"evolve-all",apiKeyEnv:"OPENAI_API_KEY",oauthEnv:"CODEX_OAUTH_FILE_PATH",effortSupport:"level",oauthFileName:"auth.json",baseUrlEnv:"OPENAI_BASE_URL",defaultModel:"gpt-5.6-sol",defaultReasoningEffort:"high",models:[{alias:"gpt-6-astra",modelId:"gpt-6-astra",description:"Newest frontier flagship"},{alias:"gpt-5.6-sol",modelId:"gpt-5.6-sol",description:"GPT-5.6 flagship (previous generation)"},{alias:"gpt-5.6-terra",modelId:"gpt-5.6-terra",description:"Balances intelligence and cost"},{alias:"gpt-5.6-luna",modelId:"gpt-5.6-luna",description:"High-volume, cost-sensitive tier"},{alias:"gpt-5.5",modelId:"gpt-5.5",description:"GPT-5.5 frontier model (two generations back)"},{alias:"gpt-5.3-codex",modelId:"gpt-5.3-codex",description:"Industry-leading code-optimized"}],systemPromptFile:"AGENTS.md",mcpConfig:{settingsDir:"~/.codex",filename:"config.toml",format:"toml"},nativeConfig:{format:"toml",path:"~/.codex/config.toml",delivery:"base-file"},presets:{"no-internet":{commandFlags:" -c web_search=disabled"},"pinned-context":{commandFlags:` -c model_context_window=${_r}`}},skillsConfig:{targetDir:"~/.codex/skills"},spendTrackingEnvs:{sessionTagEnv:"EVOLVE_LITELLM_CUSTOMER_ID",runTagEnv:"EVOLVE_LITELLM_TAGS"},setupCommand:`printf '%s\\n' "$OPENAI_API_KEY" | codex login --with-api-key`,buildCommand:({prompt:t,model:e,isResume:n,reasoningEffort:r,presetFlags:i})=>{let s=r?` -c model_reasoning_effort="${r}"`:"";return `printf '%s' "${t}" | codex exec --model ${e}${s}${i??""} --dangerously-bypass-approvals-and-sandbox --skip-git-repo-check --json${n?" resume --last":""}`}},gemini:{image:"evolve-all",apiKeyEnv:"GEMINI_API_KEY",effortSupport:"none",oauthEnv:"GEMINI_OAUTH_FILE_PATH",oauthFileName:"oauth_creds.json",oauthActivationEnv:{key:"GOOGLE_GENAI_USE_GCA",value:"true"},baseUrlEnv:"GOOGLE_GEMINI_BASE_URL",defaultModel:"gemini-3.5-flash",models:[{alias:"gemini-3.5-flash",modelId:"gemini-3.5-flash",description:"Latest flash the stable gemini CLI serves: coding + agentic planning"},{alias:"gemini-3.5-flash-lite",modelId:"gemini-3.5-flash-lite",description:"Most cost-effective 3.5-class model"},{alias:"gemini-3.1-pro-preview",modelId:"gemini-3.1-pro-preview",description:"Latest pro, complex agentic + coding"}],systemPromptFile:"GEMINI.md",mcpConfig:{settingsDir:"~/.gemini",filename:"settings.json",format:"json"},skillsConfig:{targetDir:"~/.gemini/skills"},customHeadersEnv:"GEMINI_CLI_CUSTOM_HEADERS",customHeadersFormat:"comma",gatewayPath:"/gemini",buildCommand:({prompt:t,model:e,isResume:n})=>`gemini ${n?"--resume latest ":""}--prompt ${Ee(t)} --model ${e} --yolo --output-format stream-json`},qwen:{image:"evolve-all",apiKeyEnv:"OPENAI_API_KEY",baseUrlEnv:"OPENAI_BASE_URL",effortSupport:"binary",defaultModel:"qwen3.7-max",defaultReasoningEffort:"thinking",models:[{alias:"qwen3.7-max",modelId:"qwen3.7-max",description:"Strongest reasoning and coding option"},{alias:"qwen3.7-plus",modelId:"qwen3.7-plus",description:"Latest balanced Qwen Cloud recommendation"},{alias:"qwen3.6-flash",modelId:"qwen3.6-flash",description:"Fast and cost-effective option"}],systemPromptFile:"QWEN.md",mcpConfig:{settingsDir:"~/.qwen",filename:"settings.json",format:"json"},skillsConfig:{targetDir:"~/.qwen/skills"},spendTrackingJsonConfig:{headersPath:"model.generationConfig.customHeaders"},gatewayModelAliases:{"qwen3.7-max":"dashscope/qwen3.7-max","qwen3.7-plus":"dashscope/qwen3.7-plus","qwen3.6-flash":"dashscope/qwen3.6-flash"},defaultBaseUrl:"https://dashscope-intl.aliyuncs.com/compatible-mode/v1",buildCommand:({prompt:t,model:e,isResume:n,isDirectMode:r})=>{let i=n?"--continue ":"",s=r||e.startsWith("dashscope/")?e:`dashscope/${e}`;return `qwen "${t}" ${i}--auth-type openai --model ${s} --yolo --output-format stream-json`}},kimi:{image:"evolve-all",apiKeyEnv:"KIMI_API_KEY",effortSupport:"level",baseUrlEnv:"KIMI_BASE_URL",defaultModel:"kimi-k3",defaultReasoningEffort:"max",models:[{alias:"kimi-k3",modelId:"moonshot/kimi-k3",description:"Latest flagship: 1M context, always-on thinking",maxContextSize:1048576},{alias:"kimi-k2.7-code",modelId:"moonshot/kimi-k2.7-code",description:"Latest coding-specialized standard model"},{alias:"kimi-k3-raptor",modelId:"kimi-k3-raptor",description:"Evolve-managed Kimi K3 Raptor route for latency-sensitive agent runs",maxContextSize:1048576},{alias:"kimi-k2p7-code-raptor",modelId:"kimi-k2p7-code-raptor",description:"Evolve-managed Kimi K2.7 Code Raptor route for latency-sensitive agent runs"}],systemPromptFile:"AGENTS.md",mcpConfig:{settingsDir:"~/.kimi-code",filename:"mcp.json",format:"json"},skillsConfig:{targetDir:"~/.kimi-code/skills"},defaultBaseUrl:"https://api.moonshot.ai/v1",spendTrackingTomlProvider:{configPath:"~/.kimi-code/config.toml",providerName:"evolve-gateway",modelName:"evolve-default",maxContextSize:262144},checkpointExcludes:[".kimi-code/config.toml"],gatewayModelAliases:{"kimi-k3":"moonshot/kimi-k3","kimi-k2.7-code":"moonshot/kimi-k2.7-code","kimi-k3-raptor":"kimi-k3-raptor","kimi-k2p7-code-raptor":"kimi-k2p7-code-raptor"},buildCommand:({prompt:t,isResume:e,reasoningEffort:n,homeDir:r=q$1})=>{let i=e?"--continue ":"",s=Ee(t),d=`--config-file ${r}/.kimi-code/config.toml`,u=`$(if [ -f ${r}/.kimi-code/mcp.json ]; then printf ' --mcp-config-file ${r}/.kimi-code/mcp.json'; fi)`,l=Te(n)?"":" --no-thinking";return `if kimi --help 2>&1 | grep -q -- '--print'; then kimi --print ${i}${d}${u}${l} -p ${s} --output-format stream-json; else kimi ${i}-p ${s} --output-format stream-json; fi`}},opencode:{image:"evolve-all",apiKeyEnv:"OPENROUTER_API_KEY",effortSupport:"level",baseUrlEnv:"OPENAI_BASE_URL",defaultModel:"openrouter/anthropic/claude-opus-5",defaultReasoningEffort:"high",providerEnvMap:{openrouter:{keyEnv:"OPENROUTER_API_KEY"}},gatewayConfigEnv:"OPENCODE_CONFIG_CONTENT",models:[{alias:"openrouter/anthropic/claude-fable-5.1",modelId:"openrouter/anthropic/claude-fable-5.1",description:"Anthropic Fable 5.1 via OpenRouter"},{alias:"openrouter/anthropic/claude-opus-5",modelId:"openrouter/anthropic/claude-opus-5",description:"Anthropic Opus 5 via OpenRouter"},{alias:"openrouter/anthropic/claude-sonnet-5",modelId:"openrouter/anthropic/claude-sonnet-5",description:"Anthropic Sonnet 5 via OpenRouter"},{alias:"openrouter/anthropic/claude-haiku-4.5",modelId:"openrouter/anthropic/claude-haiku-4.5",description:"Anthropic Haiku via OpenRouter"},{alias:"openrouter/openai/gpt-6-astra",modelId:"openrouter/openai/gpt-6-astra",description:"OpenAI GPT-6 Astra via OpenRouter"},{alias:"openrouter/openai/gpt-5.6-sol",modelId:"openrouter/openai/gpt-5.6-sol",description:"OpenAI GPT-5.6 Sol via OpenRouter"},{alias:"openrouter/openai/gpt-5.6-terra",modelId:"openrouter/openai/gpt-5.6-terra",description:"OpenAI GPT-5.6 Terra via OpenRouter"},{alias:"openrouter/openai/gpt-5.6-luna",modelId:"openrouter/openai/gpt-5.6-luna",description:"OpenAI GPT-5.6 Luna via OpenRouter"},{alias:"openrouter/google/gemini-3.6-flash",modelId:"openrouter/google/gemini-3.6-flash",description:"Gemini 3.6 Flash via OpenRouter"},{alias:"openrouter/qwen/qwen3.7-max",modelId:"openrouter/qwen/qwen3.7-max",description:"Qwen 3.7 Max via OpenRouter"},{alias:"openrouter/moonshotai/kimi-k3",modelId:"openrouter/moonshotai/kimi-k3",description:"Kimi K3 via OpenRouter"},{alias:"openrouter/z-ai/glm-5.3",modelId:"openrouter/z-ai/glm-5.3",description:"Zhipu GLM-5.3 via OpenRouter"},{alias:"openrouter/z-ai/glm-5.3-flash",modelId:"openrouter/z-ai/glm-5.3-flash",description:"Zhipu GLM-5.3 Flash (OpenRouter id; the Evolve gateway serves it from Fireworks)"},{alias:"openrouter/deepseek/deepseek-v4.1-flash",modelId:"openrouter/deepseek/deepseek-v4.1-flash",description:"DeepSeek V4.1 Flash via OpenRouter"},{alias:"fireworks/deepseek-v4.1-flash",modelId:"fireworks/deepseek-v4.1-flash",description:"DeepSeek V4.1 Flash via Fireworks"}],systemPromptFile:"AGENTS.md",mcpConfig:{settingsDir:".",filename:"opencode.json",format:"json"},skillsConfig:{targetDir:"~/.agents/skills"},checkpointDirs:["~/.local/share/opencode","~/.config/opencode","~/.local/state/opencode"],buildCommand:({prompt:t,model:e,isResume:n,isDirectMode:r,isExternalGateway:i,reasoningEffort:s})=>{let d=n?"--continue ":"",u=So(s);if(i)return `OPENCODE_PERMISSION='{"*":"allow"}' opencode run ${d}--model litellm/${e} --format json${u} "${t}" < /dev/null`;let l=xo(e);return r?`OPENCODE_PERMISSION='{"*":"allow"}' opencode run ${d}--model ${l} --format json${u} "${t}" < /dev/null`:`OPENCODE_PERMISSION='{"*":"allow"}' opencode run ${d}--model litellm/${l} --format json${u} "${t}" < /dev/null`}},droid:{image:"evolve-all",apiKeyEnv:"FACTORY_API_KEY",effortSupport:"level",defaultModel:"claude-opus-5",defaultReasoningEffort:"high",models:[{alias:"claude-fable-5.1",modelId:"claude-fable-5-1",description:"Factory-managed Claude Fable 5.1"},{alias:"claude-opus-5",modelId:"claude-opus-5",description:"Factory-managed Claude Opus 5"},{alias:"claude-sonnet-5",modelId:"claude-sonnet-5",description:"Factory-managed Claude Sonnet 5"},{alias:"claude-haiku-4-5",modelId:"claude-haiku-4-5-20251001",description:"Factory-managed Claude Haiku 4.5"},{alias:"gpt-6-astra",modelId:"gpt-6-astra",description:"Factory-managed GPT-6 Astra"},{alias:"gpt-5.6-sol",modelId:"gpt-5.6-sol",description:"Factory-managed GPT-5.6 Sol"},{alias:"gpt-5.6-terra",modelId:"gpt-5.6-terra",description:"Factory-managed GPT-5.6 Terra"},{alias:"gpt-5.6-luna",modelId:"gpt-5.6-luna",description:"Factory-managed GPT-5.6 Luna"},{alias:"gemini-3.6-flash",modelId:"gemini-3.6-flash",description:"Factory-managed Gemini 3.6 Flash"},{alias:"qwen3.7-max",modelId:"qwen3.7-max",description:"Qwen 3.7 Max via the Evolve gateway"},{alias:"kimi-k3",modelId:"kimi-k3",description:"Factory-managed Droid Core Kimi K3"},{alias:"glm-5.3",modelId:"glm-5.3",description:"Zhipu GLM-5.3 via the Evolve gateway"},{alias:"glm-5.3-flash",modelId:"glm-5.3-flash",description:"Zhipu GLM-5.3 Flash via the Evolve gateway"},{alias:"openrouter/deepseek/deepseek-v4.1-flash",modelId:"openrouter/deepseek/deepseek-v4.1-flash",description:"DeepSeek V4.1 Flash via OpenRouter"},{alias:"fireworks/deepseek-v4.1-flash",modelId:"fireworks/deepseek-v4.1-flash",description:"DeepSeek V4.1 Flash via Fireworks"}],systemPromptFile:"AGENTS.md",mcpConfig:{settingsDir:"~/.factory",filename:"mcp.json",format:"json"},skillsConfig:{targetDir:"~/.factory/skills"},skipApiKeyEnvInGateway:true,gatewayModelAliases:{"claude-fable-5.1":"claude-fable-5-1","kimi-k3":"moonshot/kimi-k3","glm-5.3":"openrouter/z-ai/glm-5.3","qwen3.7-max":"dashscope/qwen3.7-max"},droidGatewaySettings:{settingsPath:"~/.factory/evolve-settings.json",displayName:"Evolve Gateway",provider:"generic-chat-completion-api",maxOutputTokens:32768},checkpointDirs:["~/.factory"],buildCommand:({prompt:t,model:e,isResume:n,sessionId:r,reasoningEffort:i,isDirectMode:s,isExternalGateway:d,homeDir:u=q$1})=>{let l=!s||d,o=l?`--settings ${u}/.factory/evolve-settings.json `:"",a=l?"custom:Evolve-Gateway-0":e,c=i?` --reasoning-effort ${i}`:"",p=n&&r?`--session-id ${Ee(r)} `:"";return `printf '%s' ${Ee(t)} | droid ${o}exec ${p}--skip-permissions-unsafe --cwd ${u}/workspace --output-format stream-json --model ${Ee(a)}${c}`}}};function D(t){let e=U[t];if(!e)throw new Error(`Unknown agent type: ${t}`);return e}function oe(t,e){if(t.models.some(i=>i.alias===e||i.modelId===e))return true;let n=t.gatewayModelAliases;if(n&&(e in n||Object.values(n).includes(e)))return true;let r=t.directModelAliases;return !!(r&&(e in r||Object.values(r).includes(e)))}function Mr(t,e){return t.models.find(n=>n.alias===e)?.modelId??e}function xo(t){return t.startsWith("openrouter/")||oe(U.opencode,t)?t:`openrouter/${t}`}function Wt(t){return t in U}function M(t,e=q$1){return t.replace(/^~/,e)}function Ee(t){return `'${t.replace(/'/g,"'\\''")}'`}function J(t,e=q$1){let n=D(t);return `${M(n.mcpConfig.settingsDir,e)}/${n.mcpConfig.filename}`}function z(t,e=q$1){let n=D(t);return M(n.mcpConfig.settingsDir,e)}function W(t){if(t instanceof Error){let e=t.message.toLowerCase();return e.includes("not found")||e.includes("enoent")||e.includes("no such file")||e.includes("does not exist")}return false}function Ht(t,e){let n=[e.command,e.url].filter(Boolean);if(n.length===0)throw new Error(`MCP server "${t}" must specify command or url`);if(n.length>1)throw new Error(`MCP server "${t}" cannot specify both command and url`)}function Re(t){for(let[e,n]of Object.entries(t))Ht(e,n);}function _e(t){return t.type?t.type:t.command?"stdio":"sse"}function Co(t){let e=_e(t);return {...t,type:e}}function Eo(t){let{type:e,url:n,...r}=t;return _e(t)==="http"&&n?{httpUrl:n,...r}:n?{url:n,...r}:r}function To(t){return {type:_e(t),...t}}function Ro(t){let{type:e,...n}=t;return n.command?{...n,transport:"stdio"}:n.url&&(e==="http"||e==="sse")?{...n,transport:e}:n}function _o(t){let e=_e(t),{type:n,httpHeaders:r,envHttpHeaders:i,bearerTokenEnvVar:s,envVars:d,...u}=t;if(e==="stdio"&&t.command)return {type:"stdio",...u};if(t.url){let l={...u,type:e==="sse"?"sse":"http",url:t.url},o=t.headers??r;return o&&Object.keys(o).length>0&&(l.headers=o),l}return {type:e==="stdio"?"stdio":"http",...u}}async function qt(t,e,n,r,i){Re(n);let s=z(e,i),d=J(e,i);await t.files.makeDir(s);let u={};try{let o=await t.files.read(d);typeof o=="string"&&(u=JSON.parse(o));}catch(o){if(!W(o))throw o}let l=Object.fromEntries(Object.entries(n).map(([o,a])=>[o,r(a)]));await t.files.write(d,JSON.stringify({...u,mcpServers:l},null,2));}async function Xe(t,e,n,r){Re(n);let i=z("claude",r),s=J("claude",r),d=Object.fromEntries(Object.entries(n).map(([l,o])=>[l,To(o)]));await t.files.write(`${e}/.mcp.json`,JSON.stringify({mcpServers:d},null,2)),await t.files.makeDir(i);let u={};try{let l=await t.files.read(s);typeof l=="string"&&(u=JSON.parse(l));}catch(l){if(!W(l))throw l}u.enableAllProjectMcpServers=true,await t.files.write(s,JSON.stringify(u,null,2));}async function et(t,e,n){await qt(t,"gemini",e,Co,n);}async function tt(t,e,n){await qt(t,"qwen",e,Eo,n);}async function nt(t,e,n,r,i){let s=z(e,i),d=J(e,i);await t.files.makeDir(s);let u={};try{let p=await t.files.read(d);typeof p=="string"&&(u=JSON.parse(p));}catch(p){if(!W(p))throw p}let l=n.split("."),o=u;for(let p=0;p<l.length-1;p++){let g=l[p];(typeof o[g]!="object"||o[g]===null)&&(o[g]={}),o=o[g];}let a=l[l.length-1],c=typeof o[a]=="object"&&o[a]!==null?o[a]:{};o[a]={...c,...r},await t.files.write(d,JSON.stringify(u,null,2));}async function Yt(t,e,n){let r=z("qwen",n),i=J("qwen",n);await t.files.makeDir(r);let s={};try{let o=await t.files.read(i);typeof o=="string"&&(s=JSON.parse(o));}catch(o){if(!W(o))throw o}let d=s.model??{},u=d.generationConfig??{},l=u.extra_body??{};s.model={...d,generationConfig:{...u,extra_body:{...l,enable_thinking:e}}},await t.files.write(i,JSON.stringify(s,null,2));}async function Zt(t,e,n){await qt(t,"kimi",e,Ro,n);}async function rt(t,e,n){Re(n);let r=`${e}/.factory`,i=`${r}/mcp.json`;await t.files.makeDir(r);let s={};try{let u=await t.files.read(i);typeof u=="string"&&(s=JSON.parse(u));}catch(u){if(!W(u))throw u}let d=Object.fromEntries(Object.entries(n).map(([u,l])=>[u,_o(l)]));await t.files.write(i,JSON.stringify({...s,mcpServers:d},null,2));}async function it(t,e,n,r){let i=M(e.settingsPath,r),s=i.slice(0,i.lastIndexOf("/"));await t.files.makeDir(s);let d={cloudSessionSync:false,customModels:[{model:e.model,displayName:e.displayName,baseUrl:e.baseUrl,apiKey:`\${${e.apiKeyEnv}}`,provider:e.provider,...e.maxOutputTokens!==void 0&&{maxOutputTokens:e.maxOutputTokens},extraHeaders:n}]};await t.files.write(i,JSON.stringify(d,null,2));}async function Qt(t,e,n){Re(n);let r=`${e}/opencode.json`,i={};try{let d=await t.files.read(r);typeof d=="string"&&(i=JSON.parse(d));}catch(d){if(!W(d))throw d}let s=Object.fromEntries(Object.entries(n).map(([d,u])=>[d,Po(u)]));await t.files.write(r,JSON.stringify({...i,mcp:s},null,2));}function Po(t){let e=_e(t);if(e==="stdio"&&t.command){let r={type:"local",command:t.args?[t.command,...t.args]:[t.command]};return t.env&&Object.keys(t.env).length>0&&(r.environment=t.env),r}if(t.url){let n={type:"remote",url:t.url};return t.headers&&Object.keys(t.headers).length>0&&(n.headers=t.headers),n}return {type:e==="stdio"?"local":"remote",...t}}function Xt(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)?t:void 0}function $r(t,e,n){let r=t[e];if(r===void 0)return {};let i=Xt(r);if(!i){let s=Array.isArray(r)?"an array":`a ${typeof r}`;throw new Error(`Refusing to rewrite "${e}" in ${n}: expected a TOML table, found ${s}`)}return i}function en(t,e){if(t===e)return true;if(Array.isArray(t)||Array.isArray(e))return Array.isArray(t)&&Array.isArray(e)&&t.length===e.length&&t.every((s,d)=>en(s,e[d]));let n=Xt(t),r=Xt(e);if(!n||!r)return false;let i=Object.keys(n);return i.length===Object.keys(r).length&&i.every(s=>s in r&&en(n[s],r[s]))}async function Ur(t,e){let n="";try{let r=await t.files.read(e);typeof r=="string"&&(n=r);}catch(r){if(!W(r))throw r;return {}}if(!n.trim())return {};try{return parse(n)}catch(r){throw new Error(`Failed to parse TOML at ${e}: ${r.message}`)}}async function tn(t,e,n){await t.files.write(e,stringify(n).trimEnd()+`
1
+ import {w,o,p,n,Da,Ha as Ha$1,g,s,m,h,c,e,d,f,i,j as j$1,k,l,r,q as q$1,a,t,Ja,Ba,Ea as Ea$1,Fa,Ia as Ia$1,ya as ya$1,za,Ca,Aa,Ka,La,Ma,xa as xa$1,Na,Ga,v,u,x,ua as ua$1,b,ha as ha$1,y,z as z$2,A,B as B$1}from'./chunk-RFLMRPGK.js';export{S as AGENT_EFFORT_SUPPORT_VALUES,P as ANALYSIS_ARTIFACT_STREAMS,G as ANALYSIS_STATUSES,H as CHECK_STATUSES,X as DEFAULT_HARNESS_TRIAL_LAYOUT,D as EVAL_SANDBOX_PROVIDERS,ha as EvolveApiError,ka as EvolveDigestMismatchError,la as EvolveIncompleteDownloadError,L as GATEWAY_TRACE_SEQ_BASE,Y as HARNESS_TRIAL_LAYOUTS,Q as HOSTED_ERROR_CODES,ja as ImportSettleError,F as JOB_LIST_KINDS,E as JOB_LIST_SCOPES,c as MANAGED_SANDBOX_PROVIDERS,ia as NoActiveVersionError,O as SANDBOX_LOG_STREAMS,J as TASK_LINKED_BY,K as TASK_LINK_REASONS,N as TRIAL_ARTIFACT_STREAMS,C as TRIAL_STATUSES,na as agents,ra as analyses,ea as analysisEvolveRecord,da as assembleTrialTree,ta as auth,ga as checkEvolveRecord,sa as checks,ma as datasets,M as gatewayUsageOf,aa as harborCopyPath,Z as harnessTrialLayout,_ as homeRelativePath,va as hosted,R as isHostedErrorCode,ca as jobEvolveRecord,pa as jobs,Da as managedSecrets,wa as meta,ua as orgs,I as passAtK,$ as placeHomeObject,Oa as sessions,oa as skills,fa as taskCheckEvolveRecord,ba as trialEvolveRecord,qa as trials}from'./chunk-RFLMRPGK.js';import'./chunk-HQJI3HHU.js';export{b as EvolveUploadTimeoutError}from'./chunk-5GVMBEYI.js';import {EventEmitter}from'events';import Kl from'ajv';import {randomBytes,randomUUID,publicEncrypt,constants,createHash}from'crypto';import {stringify,parse}from'smol-toml';import {execFile,exec}from'child_process';import {promisify}from'util';import {mkdir,appendFile,rm,readFile,writeFile,unlink,copyFile,readdir,mkdtemp,rename,stat}from'fs/promises';import {homedir,tmpdir}from'os';import*as K from'path';import {join,basename,posix,dirname,isAbsolute,normalize,resolve,relative}from'path';import xa from'zod-to-json-schema';import*as j from'fs';import {createWriteStream}from'fs';import {z as z$1}from'zod';export{E2BProvider,createE2BProvider}from'@evolvingmachines/e2b';export{DaytonaProvider,createDaytonaProvider}from'@evolvingmachines/daytona';export{ModalProvider,createModalProvider}from'@evolvingmachines/modal';var vo={CLAUDE:"claude",CODEX:"codex",GEMINI:"gemini",QWEN:"qwen",KIMI:"kimi",OPENCODE:"opencode",DROID:"droid"},Gt=["no-internet","pinned-context"],Jt={strict:{coerceTypes:false,removeAdditional:false,useDefaults:false,allErrors:true},loose:{coerceTypes:"array",removeAdditional:false,useDefaults:true,allErrors:true}},bo=["timeoutMs","background","from","checkpointComment","resume"];var Pr=["off","minimal","low","medium","high","xhigh","max","thinking"],_r=2e5,Ir=["off","minimal","medium","thinking"],Or="medium";function ko(t){return t==="none"?{efforts:[],defaultEffort:null}:{efforts:t==="binary"?Ir:Pr,defaultEffort:Or}}function Ar(t,e){return e??U[t]?.defaultReasoningEffort}function Te(t){return t!=="off"&&t!=="none"&&t!=="minimal"&&t!=="no-thinking"}function zt(t){if(!(t==="off"||t==="none"||t==="no-thinking"))return !t||t==="thinking"||t==="medium"?"medium":t==="low"||t==="minimal"?"minimal":t==="xhigh"?"max":t}function So(t){let e=zt(t);return e?` --variant ${e} --thinking`:""}var U={claude:{image:"evolve-all",apiKeyEnv:"ANTHROPIC_API_KEY",effortSupport:"level",oauthEnv:"CLAUDE_CODE_OAUTH_TOKEN",baseUrlEnv:"ANTHROPIC_BASE_URL",customHeadersEnv:"ANTHROPIC_CUSTOM_HEADERS",defaultModel:"opus",defaultReasoningEffort:"high",models:[{alias:"fable",modelId:"claude-fable-5-1",description:"Highest capability, long-horizon agentic work"},{alias:"opus",modelId:"claude-opus-5",description:"Complex reasoning, R&D, architecting"},{alias:"sonnet",modelId:"claude-sonnet-5",description:"Daily coding, features, tests"},{alias:"haiku",modelId:"claude-haiku-4-5-20251001",description:"Quick tasks, syntax correction"},{alias:"opus[1m]",modelId:"opus[1m]",description:"Complex reasoning with 1M context window"},{alias:"sonnet[1m]",modelId:"sonnet[1m]",description:"Daily coding with 1M context window"},{alias:"glm-5.3",modelId:"glm-5.3",description:"Zhipu GLM-5.3 via the Evolve gateway"},{alias:"glm-5.3-flash",modelId:"glm-5.3-flash",description:"Zhipu GLM-5.3 Flash via the Evolve gateway"},{alias:"openrouter/deepseek/deepseek-v4.1-flash",modelId:"openrouter/deepseek/deepseek-v4.1-flash",description:"DeepSeek V4.1 Flash via OpenRouter"},{alias:"fireworks/deepseek-v4.1-flash",modelId:"fireworks/deepseek-v4.1-flash",description:"DeepSeek V4.1 Flash via Fireworks"}],systemPromptFile:"CLAUDE.md",mcpConfig:{settingsDir:"~/.claude",filename:"settings.json",format:"json",projectConfig:true},nativeConfig:{format:"json",path:"~/.claude/evolve-user-settings.json",delivery:"settings-flag"},presets:{"no-internet":{configStamp:{permissions:{deny:["WebSearch","WebFetch"]}}},"pinned-context":{configStamp:{autoCompactEnabled:true,autoCompactWindow:_r}}},skillsConfig:{targetDir:"~/.claude/skills"},buildCommand:({prompt:t,model:e,isResume:n,reasoningEffort:r,nativeConfigPath:i})=>{let s=n?"--continue ":"",d=r?` --effort ${r}`:"",u=i?` --settings ${i}`:"";return `echo "${t}" | claude -p ${s}--model ${e}${d}${u} --output-format stream-json --verbose --dangerously-skip-permissions`}},codex:{image:"evolve-all",apiKeyEnv:"OPENAI_API_KEY",oauthEnv:"CODEX_OAUTH_FILE_PATH",effortSupport:"level",oauthFileName:"auth.json",baseUrlEnv:"OPENAI_BASE_URL",defaultModel:"gpt-5.6-sol",defaultReasoningEffort:"high",models:[{alias:"gpt-6-astra",modelId:"gpt-6-astra",description:"Newest frontier flagship"},{alias:"gpt-5.6-sol",modelId:"gpt-5.6-sol",description:"GPT-5.6 flagship (previous generation)"},{alias:"gpt-5.6-terra",modelId:"gpt-5.6-terra",description:"Balances intelligence and cost"},{alias:"gpt-5.6-luna",modelId:"gpt-5.6-luna",description:"High-volume, cost-sensitive tier"},{alias:"gpt-5.5",modelId:"gpt-5.5",description:"GPT-5.5 frontier model (two generations back)"},{alias:"gpt-5.3-codex",modelId:"gpt-5.3-codex",description:"Industry-leading code-optimized"}],systemPromptFile:"AGENTS.md",mcpConfig:{settingsDir:"~/.codex",filename:"config.toml",format:"toml"},nativeConfig:{format:"toml",path:"~/.codex/config.toml",delivery:"base-file"},presets:{"no-internet":{commandFlags:" -c web_search=disabled"},"pinned-context":{commandFlags:` -c model_context_window=${_r}`}},skillsConfig:{targetDir:"~/.codex/skills"},spendTrackingEnvs:{sessionTagEnv:"EVOLVE_LITELLM_CUSTOMER_ID",runTagEnv:"EVOLVE_LITELLM_TAGS"},setupCommand:`printf '%s\\n' "$OPENAI_API_KEY" | codex login --with-api-key`,buildCommand:({prompt:t,model:e,isResume:n,reasoningEffort:r,presetFlags:i})=>{let s=r?` -c model_reasoning_effort="${r}"`:"";return `printf '%s' "${t}" | codex exec --model ${e}${s}${i??""} --dangerously-bypass-approvals-and-sandbox --skip-git-repo-check --json${n?" resume --last":""}`}},gemini:{image:"evolve-all",apiKeyEnv:"GEMINI_API_KEY",effortSupport:"none",oauthEnv:"GEMINI_OAUTH_FILE_PATH",oauthFileName:"oauth_creds.json",oauthActivationEnv:{key:"GOOGLE_GENAI_USE_GCA",value:"true"},baseUrlEnv:"GOOGLE_GEMINI_BASE_URL",defaultModel:"gemini-3.5-flash",models:[{alias:"gemini-3.5-flash",modelId:"gemini-3.5-flash",description:"Latest flash the stable gemini CLI serves: coding + agentic planning"},{alias:"gemini-3.5-flash-lite",modelId:"gemini-3.5-flash-lite",description:"Most cost-effective 3.5-class model"},{alias:"gemini-3.1-pro-preview",modelId:"gemini-3.1-pro-preview",description:"Latest pro, complex agentic + coding"}],systemPromptFile:"GEMINI.md",mcpConfig:{settingsDir:"~/.gemini",filename:"settings.json",format:"json"},skillsConfig:{targetDir:"~/.gemini/skills"},customHeadersEnv:"GEMINI_CLI_CUSTOM_HEADERS",customHeadersFormat:"comma",gatewayPath:"/gemini",buildCommand:({prompt:t,model:e,isResume:n})=>`gemini ${n?"--resume latest ":""}--prompt ${Ee(t)} --model ${e} --yolo --output-format stream-json`},qwen:{image:"evolve-all",apiKeyEnv:"OPENAI_API_KEY",baseUrlEnv:"OPENAI_BASE_URL",effortSupport:"binary",defaultModel:"qwen3.7-max",defaultReasoningEffort:"thinking",models:[{alias:"qwen3.7-max",modelId:"qwen3.7-max",description:"Strongest reasoning and coding option"},{alias:"qwen3.7-plus",modelId:"qwen3.7-plus",description:"Latest balanced Qwen Cloud recommendation"},{alias:"qwen3.6-flash",modelId:"qwen3.6-flash",description:"Fast and cost-effective option"}],systemPromptFile:"QWEN.md",mcpConfig:{settingsDir:"~/.qwen",filename:"settings.json",format:"json"},skillsConfig:{targetDir:"~/.qwen/skills"},spendTrackingJsonConfig:{headersPath:"model.generationConfig.customHeaders"},gatewayModelAliases:{"qwen3.7-max":"dashscope/qwen3.7-max","qwen3.7-plus":"dashscope/qwen3.7-plus","qwen3.6-flash":"dashscope/qwen3.6-flash"},defaultBaseUrl:"https://dashscope-intl.aliyuncs.com/compatible-mode/v1",buildCommand:({prompt:t,model:e,isResume:n,isDirectMode:r})=>{let i=n?"--continue ":"",s=r||e.startsWith("dashscope/")?e:`dashscope/${e}`;return `qwen "${t}" ${i}--auth-type openai --model ${s} --yolo --output-format stream-json`}},kimi:{image:"evolve-all",apiKeyEnv:"KIMI_API_KEY",effortSupport:"level",baseUrlEnv:"KIMI_BASE_URL",defaultModel:"kimi-k3",defaultReasoningEffort:"max",models:[{alias:"kimi-k3",modelId:"moonshot/kimi-k3",description:"Latest flagship: 1M context, always-on thinking",maxContextSize:1048576},{alias:"kimi-k2.7-code",modelId:"moonshot/kimi-k2.7-code",description:"Latest coding-specialized standard model"},{alias:"kimi-k3-raptor",modelId:"kimi-k3-raptor",description:"Evolve-managed Kimi K3 Raptor route for latency-sensitive agent runs",maxContextSize:1048576},{alias:"kimi-k2p7-code-raptor",modelId:"kimi-k2p7-code-raptor",description:"Evolve-managed Kimi K2.7 Code Raptor route for latency-sensitive agent runs"}],systemPromptFile:"AGENTS.md",mcpConfig:{settingsDir:"~/.kimi-code",filename:"mcp.json",format:"json"},skillsConfig:{targetDir:"~/.kimi-code/skills"},defaultBaseUrl:"https://api.moonshot.ai/v1",spendTrackingTomlProvider:{configPath:"~/.kimi-code/config.toml",providerName:"evolve-gateway",modelName:"evolve-default",maxContextSize:262144},checkpointExcludes:[".kimi-code/config.toml"],gatewayModelAliases:{"kimi-k3":"moonshot/kimi-k3","kimi-k2.7-code":"moonshot/kimi-k2.7-code","kimi-k3-raptor":"kimi-k3-raptor","kimi-k2p7-code-raptor":"kimi-k2p7-code-raptor"},buildCommand:({prompt:t,isResume:e,reasoningEffort:n,homeDir:r=q$1})=>{let i=e?"--continue ":"",s=Ee(t),d=`--config-file ${r}/.kimi-code/config.toml`,u=`$(if [ -f ${r}/.kimi-code/mcp.json ]; then printf ' --mcp-config-file ${r}/.kimi-code/mcp.json'; fi)`,l=Te(n)?"":" --no-thinking";return `if kimi --help 2>&1 | grep -q -- '--print'; then kimi --print ${i}${d}${u}${l} -p ${s} --output-format stream-json; else kimi ${i}-p ${s} --output-format stream-json; fi`}},opencode:{image:"evolve-all",apiKeyEnv:"OPENROUTER_API_KEY",effortSupport:"level",baseUrlEnv:"OPENAI_BASE_URL",defaultModel:"openrouter/anthropic/claude-opus-5",defaultReasoningEffort:"high",providerEnvMap:{openrouter:{keyEnv:"OPENROUTER_API_KEY"}},gatewayConfigEnv:"OPENCODE_CONFIG_CONTENT",models:[{alias:"openrouter/anthropic/claude-fable-5.1",modelId:"openrouter/anthropic/claude-fable-5.1",description:"Anthropic Fable 5.1 via OpenRouter"},{alias:"openrouter/anthropic/claude-opus-5",modelId:"openrouter/anthropic/claude-opus-5",description:"Anthropic Opus 5 via OpenRouter"},{alias:"openrouter/anthropic/claude-sonnet-5",modelId:"openrouter/anthropic/claude-sonnet-5",description:"Anthropic Sonnet 5 via OpenRouter"},{alias:"openrouter/anthropic/claude-haiku-4.5",modelId:"openrouter/anthropic/claude-haiku-4.5",description:"Anthropic Haiku via OpenRouter"},{alias:"openrouter/openai/gpt-6-astra",modelId:"openrouter/openai/gpt-6-astra",description:"OpenAI GPT-6 Astra via OpenRouter"},{alias:"openrouter/openai/gpt-5.6-sol",modelId:"openrouter/openai/gpt-5.6-sol",description:"OpenAI GPT-5.6 Sol via OpenRouter"},{alias:"openrouter/openai/gpt-5.6-terra",modelId:"openrouter/openai/gpt-5.6-terra",description:"OpenAI GPT-5.6 Terra via OpenRouter"},{alias:"openrouter/openai/gpt-5.6-luna",modelId:"openrouter/openai/gpt-5.6-luna",description:"OpenAI GPT-5.6 Luna via OpenRouter"},{alias:"openrouter/google/gemini-3.6-flash",modelId:"openrouter/google/gemini-3.6-flash",description:"Gemini 3.6 Flash via OpenRouter"},{alias:"openrouter/qwen/qwen3.7-max",modelId:"openrouter/qwen/qwen3.7-max",description:"Qwen 3.7 Max via OpenRouter"},{alias:"openrouter/moonshotai/kimi-k3",modelId:"openrouter/moonshotai/kimi-k3",description:"Kimi K3 via OpenRouter"},{alias:"openrouter/z-ai/glm-5.3",modelId:"openrouter/z-ai/glm-5.3",description:"Zhipu GLM-5.3 via OpenRouter"},{alias:"openrouter/z-ai/glm-5.3-flash",modelId:"openrouter/z-ai/glm-5.3-flash",description:"Zhipu GLM-5.3 Flash (OpenRouter id; the Evolve gateway serves it from Fireworks)"},{alias:"openrouter/deepseek/deepseek-v4.1-flash",modelId:"openrouter/deepseek/deepseek-v4.1-flash",description:"DeepSeek V4.1 Flash via OpenRouter"},{alias:"fireworks/deepseek-v4.1-flash",modelId:"fireworks/deepseek-v4.1-flash",description:"DeepSeek V4.1 Flash via Fireworks"}],systemPromptFile:"AGENTS.md",mcpConfig:{settingsDir:".",filename:"opencode.json",format:"json"},skillsConfig:{targetDir:"~/.agents/skills"},checkpointDirs:["~/.local/share/opencode","~/.config/opencode","~/.local/state/opencode"],buildCommand:({prompt:t,model:e,isResume:n,isDirectMode:r,isExternalGateway:i,reasoningEffort:s})=>{let d=n?"--continue ":"",u=So(s);if(i)return `OPENCODE_PERMISSION='{"*":"allow"}' opencode run ${d}--model litellm/${e} --format json${u} "${t}" < /dev/null`;let l=xo(e);return r?`OPENCODE_PERMISSION='{"*":"allow"}' opencode run ${d}--model ${l} --format json${u} "${t}" < /dev/null`:`OPENCODE_PERMISSION='{"*":"allow"}' opencode run ${d}--model litellm/${l} --format json${u} "${t}" < /dev/null`}},droid:{image:"evolve-all",apiKeyEnv:"FACTORY_API_KEY",effortSupport:"level",defaultModel:"claude-opus-5",defaultReasoningEffort:"high",models:[{alias:"claude-fable-5.1",modelId:"claude-fable-5-1",description:"Factory-managed Claude Fable 5.1"},{alias:"claude-opus-5",modelId:"claude-opus-5",description:"Factory-managed Claude Opus 5"},{alias:"claude-sonnet-5",modelId:"claude-sonnet-5",description:"Factory-managed Claude Sonnet 5"},{alias:"claude-haiku-4-5",modelId:"claude-haiku-4-5-20251001",description:"Factory-managed Claude Haiku 4.5"},{alias:"gpt-6-astra",modelId:"gpt-6-astra",description:"Factory-managed GPT-6 Astra"},{alias:"gpt-5.6-sol",modelId:"gpt-5.6-sol",description:"Factory-managed GPT-5.6 Sol"},{alias:"gpt-5.6-terra",modelId:"gpt-5.6-terra",description:"Factory-managed GPT-5.6 Terra"},{alias:"gpt-5.6-luna",modelId:"gpt-5.6-luna",description:"Factory-managed GPT-5.6 Luna"},{alias:"gemini-3.6-flash",modelId:"gemini-3.6-flash",description:"Factory-managed Gemini 3.6 Flash"},{alias:"qwen3.7-max",modelId:"qwen3.7-max",description:"Qwen 3.7 Max via the Evolve gateway"},{alias:"kimi-k3",modelId:"kimi-k3",description:"Factory-managed Droid Core Kimi K3"},{alias:"glm-5.3",modelId:"glm-5.3",description:"Zhipu GLM-5.3 via the Evolve gateway"},{alias:"glm-5.3-flash",modelId:"glm-5.3-flash",description:"Zhipu GLM-5.3 Flash via the Evolve gateway"},{alias:"openrouter/deepseek/deepseek-v4.1-flash",modelId:"openrouter/deepseek/deepseek-v4.1-flash",description:"DeepSeek V4.1 Flash via OpenRouter"},{alias:"fireworks/deepseek-v4.1-flash",modelId:"fireworks/deepseek-v4.1-flash",description:"DeepSeek V4.1 Flash via Fireworks"}],systemPromptFile:"AGENTS.md",mcpConfig:{settingsDir:"~/.factory",filename:"mcp.json",format:"json"},skillsConfig:{targetDir:"~/.factory/skills"},skipApiKeyEnvInGateway:true,gatewayModelAliases:{"claude-fable-5.1":"claude-fable-5-1","kimi-k3":"moonshot/kimi-k3","glm-5.3":"openrouter/z-ai/glm-5.3","qwen3.7-max":"dashscope/qwen3.7-max"},droidGatewaySettings:{settingsPath:"~/.factory/evolve-settings.json",displayName:"Evolve Gateway",provider:"generic-chat-completion-api",maxOutputTokens:32768},checkpointDirs:["~/.factory"],buildCommand:({prompt:t,model:e,isResume:n,sessionId:r,reasoningEffort:i,isDirectMode:s,isExternalGateway:d,homeDir:u=q$1})=>{let l=!s||d,o=l?`--settings ${u}/.factory/evolve-settings.json `:"",a=l?"custom:Evolve-Gateway-0":e,c=i?` --reasoning-effort ${i}`:"",p=n&&r?`--session-id ${Ee(r)} `:"";return `printf '%s' ${Ee(t)} | droid ${o}exec ${p}--skip-permissions-unsafe --cwd ${u}/workspace --output-format stream-json --model ${Ee(a)}${c}`}}};function D(t){let e=U[t];if(!e)throw new Error(`Unknown agent type: ${t}`);return e}function oe(t,e){if(t.models.some(i=>i.alias===e||i.modelId===e))return true;let n=t.gatewayModelAliases;if(n&&(e in n||Object.values(n).includes(e)))return true;let r=t.directModelAliases;return !!(r&&(e in r||Object.values(r).includes(e)))}function Mr(t,e){return t.models.find(n=>n.alias===e)?.modelId??e}function xo(t){return t.startsWith("openrouter/")||oe(U.opencode,t)?t:`openrouter/${t}`}function Wt(t){return t in U}function M(t,e=q$1){return t.replace(/^~/,e)}function Ee(t){return `'${t.replace(/'/g,"'\\''")}'`}function J(t,e=q$1){let n=D(t);return `${M(n.mcpConfig.settingsDir,e)}/${n.mcpConfig.filename}`}function z(t,e=q$1){let n=D(t);return M(n.mcpConfig.settingsDir,e)}function W(t){if(t instanceof Error){let e=t.message.toLowerCase();return e.includes("not found")||e.includes("enoent")||e.includes("no such file")||e.includes("does not exist")}return false}function Ht(t,e){let n=[e.command,e.url].filter(Boolean);if(n.length===0)throw new Error(`MCP server "${t}" must specify command or url`);if(n.length>1)throw new Error(`MCP server "${t}" cannot specify both command and url`)}function Re(t){for(let[e,n]of Object.entries(t))Ht(e,n);}function _e(t){return t.type?t.type:t.command?"stdio":"sse"}function Co(t){let e=_e(t);return {...t,type:e}}function Eo(t){let{type:e,url:n,...r}=t;return _e(t)==="http"&&n?{httpUrl:n,...r}:n?{url:n,...r}:r}function To(t){return {type:_e(t),...t}}function Ro(t){let{type:e,...n}=t;return n.command?{...n,transport:"stdio"}:n.url&&(e==="http"||e==="sse")?{...n,transport:e}:n}function _o(t){let e=_e(t),{type:n,httpHeaders:r,envHttpHeaders:i,bearerTokenEnvVar:s,envVars:d,...u}=t;if(e==="stdio"&&t.command)return {type:"stdio",...u};if(t.url){let l={...u,type:e==="sse"?"sse":"http",url:t.url},o=t.headers??r;return o&&Object.keys(o).length>0&&(l.headers=o),l}return {type:e==="stdio"?"stdio":"http",...u}}async function qt(t,e,n,r,i){Re(n);let s=z(e,i),d=J(e,i);await t.files.makeDir(s);let u={};try{let o=await t.files.read(d);typeof o=="string"&&(u=JSON.parse(o));}catch(o){if(!W(o))throw o}let l=Object.fromEntries(Object.entries(n).map(([o,a])=>[o,r(a)]));await t.files.write(d,JSON.stringify({...u,mcpServers:l},null,2));}async function Xe(t,e,n,r){Re(n);let i=z("claude",r),s=J("claude",r),d=Object.fromEntries(Object.entries(n).map(([l,o])=>[l,To(o)]));await t.files.write(`${e}/.mcp.json`,JSON.stringify({mcpServers:d},null,2)),await t.files.makeDir(i);let u={};try{let l=await t.files.read(s);typeof l=="string"&&(u=JSON.parse(l));}catch(l){if(!W(l))throw l}u.enableAllProjectMcpServers=true,await t.files.write(s,JSON.stringify(u,null,2));}async function et(t,e,n){await qt(t,"gemini",e,Co,n);}async function tt(t,e,n){await qt(t,"qwen",e,Eo,n);}async function nt(t,e,n,r,i){let s=z(e,i),d=J(e,i);await t.files.makeDir(s);let u={};try{let p=await t.files.read(d);typeof p=="string"&&(u=JSON.parse(p));}catch(p){if(!W(p))throw p}let l=n.split("."),o=u;for(let p=0;p<l.length-1;p++){let g=l[p];(typeof o[g]!="object"||o[g]===null)&&(o[g]={}),o=o[g];}let a=l[l.length-1],c=typeof o[a]=="object"&&o[a]!==null?o[a]:{};o[a]={...c,...r},await t.files.write(d,JSON.stringify(u,null,2));}async function Yt(t,e,n){let r=z("qwen",n),i=J("qwen",n);await t.files.makeDir(r);let s={};try{let o=await t.files.read(i);typeof o=="string"&&(s=JSON.parse(o));}catch(o){if(!W(o))throw o}let d=s.model??{},u=d.generationConfig??{},l=u.extra_body??{};s.model={...d,generationConfig:{...u,extra_body:{...l,enable_thinking:e}}},await t.files.write(i,JSON.stringify(s,null,2));}async function Zt(t,e,n){await qt(t,"kimi",e,Ro,n);}async function rt(t,e,n){Re(n);let r=`${e}/.factory`,i=`${r}/mcp.json`;await t.files.makeDir(r);let s={};try{let u=await t.files.read(i);typeof u=="string"&&(s=JSON.parse(u));}catch(u){if(!W(u))throw u}let d=Object.fromEntries(Object.entries(n).map(([u,l])=>[u,_o(l)]));await t.files.write(i,JSON.stringify({...s,mcpServers:d},null,2));}async function it(t,e,n,r){let i=M(e.settingsPath,r),s=i.slice(0,i.lastIndexOf("/"));await t.files.makeDir(s);let d={cloudSessionSync:false,customModels:[{model:e.model,displayName:e.displayName,baseUrl:e.baseUrl,apiKey:`\${${e.apiKeyEnv}}`,provider:e.provider,...e.maxOutputTokens!==void 0&&{maxOutputTokens:e.maxOutputTokens},extraHeaders:n}]};await t.files.write(i,JSON.stringify(d,null,2));}async function Qt(t,e,n){Re(n);let r=`${e}/opencode.json`,i={};try{let d=await t.files.read(r);typeof d=="string"&&(i=JSON.parse(d));}catch(d){if(!W(d))throw d}let s=Object.fromEntries(Object.entries(n).map(([d,u])=>[d,Po(u)]));await t.files.write(r,JSON.stringify({...i,mcp:s},null,2));}function Po(t){let e=_e(t);if(e==="stdio"&&t.command){let r={type:"local",command:t.args?[t.command,...t.args]:[t.command]};return t.env&&Object.keys(t.env).length>0&&(r.environment=t.env),r}if(t.url){let n={type:"remote",url:t.url};return t.headers&&Object.keys(t.headers).length>0&&(n.headers=t.headers),n}return {type:e==="stdio"?"local":"remote",...t}}function Xt(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)?t:void 0}function $r(t,e,n){let r=t[e];if(r===void 0)return {};let i=Xt(r);if(!i){let s=Array.isArray(r)?"an array":`a ${typeof r}`;throw new Error(`Refusing to rewrite "${e}" in ${n}: expected a TOML table, found ${s}`)}return i}function en(t,e){if(t===e)return true;if(Array.isArray(t)||Array.isArray(e))return Array.isArray(t)&&Array.isArray(e)&&t.length===e.length&&t.every((s,d)=>en(s,e[d]));let n=Xt(t),r=Xt(e);if(!n||!r)return false;let i=Object.keys(n);return i.length===Object.keys(r).length&&i.every(s=>s in r&&en(n[s],r[s]))}async function Ur(t,e){let n="";try{let r=await t.files.read(e);typeof r=="string"&&(n=r);}catch(r){if(!W(r))throw r;return {}}if(!n.trim())return {};try{return parse(n)}catch(r){throw new Error(`Failed to parse TOML at ${e}: ${r.message}`)}}async function tn(t,e,n){await t.files.write(e,stringify(n).trimEnd()+`
2
2
  `);}function Ao(t,e){let n={},r=e.type??(e.command?"stdio":"http");if(r==="http"||r==="sse"||!!e.url){if(!e.url)throw new Error(`MCP server "${t}" is missing url for ${r} transport`);n.url=e.url,e.bearerTokenEnvVar&&(n.bearer_token_env_var=e.bearerTokenEnvVar);let s=e.httpHeaders??e.headers;s&&Object.keys(s).length>0&&(n.http_headers=s),e.envHttpHeaders&&Object.keys(e.envHttpHeaders).length>0&&(n.env_http_headers=e.envHttpHeaders);}else n.command=e.command,e.args&&e.args.length>0&&(n.args=e.args),e.cwd&&(n.cwd=e.cwd);return e.env&&Object.keys(e.env).length>0&&(n.env=e.env),e.envVars&&e.envVars.length>0&&(n.env_vars=e.envVars),n}async function st(t,e,n){for(let[u,l]of Object.entries(e))Ht(u,l);let r=z("codex",n),i=J("codex",n);await t.files.makeDir(r);let s=await Ur(t,i);s.experimental_use_rmcp_client===void 0&&(s.experimental_use_rmcp_client=true);let d=$r(s,"mcp_servers",i);s.mcp_servers=d;for(let[u,l]of Object.entries(e))d[u]===void 0&&(d[u]=Ao(u,l));await tn(t,i,s);}async function ot(t$1,e,n,r={},i){let s=z("codex",i),d=J("codex",i);await t$1.files.makeDir(s);let u$1=await Ur(t$1,d),l={...n?{[t]:n.sessionTagEnv,[u]:n.runTagEnv}:{},...r},o={name:"Evolve Gateway",base_url:e,env_key:"OPENAI_API_KEY",wire_api:"responses",...Object.keys(l).length>0?{env_http_headers:l}:{}},a=$r(u$1,"model_providers",d);u$1.model_provider==="evolve-gateway"&&en(a["evolve-gateway"],o)||(u$1.model_provider="evolve-gateway",a["evolve-gateway"]=o,u$1.model_providers=a,await tn(t$1,d,u$1));}async function nn(t,e,n,r,i){let s=M(e.configPath,i),d=s.slice(0,s.lastIndexOf("/"));await t.files.makeDir(d);let u={default_model:e.modelName,default_thinking:r.defaultThinking,default_permission_mode:"auto",thinking:{mode:r.defaultThinking?"on":"off",...r.defaultThinking&&r.thinkingEffort?{effort:r.thinkingEffort}:{}},providers:{[e.providerName]:{type:"kimi",base_url:r.baseUrl,api_key:r.apiKey,custom_headers:n}},models:{[e.modelName]:{provider:e.providerName,model:r.model,max_context_size:e.maxContextSize,capabilities:["image_in","thinking"]}}};await tn(t,s,u);}async function rn(t,e,n,r,i){if(!(!r||Object.keys(r).length===0))switch(t){case "claude":await Xe(e,n,r,i);break;case "codex":await st(e,r,i);break;case "gemini":await et(e,r,i);break;case "qwen":await tt(e,r,i);break;case "kimi":await Zt(e,r,i);break;case "opencode":await Qt(e,n,r);break;case "droid":await rt(e,n,r);break;default:throw new Error(`Unknown agent type for MCP config: ${t}`)}}function Dr(t){return !!t&&t.sessionUpdate!=="error"&&t.sessionUpdate!=="usage"}function P(t,e){for(let n of t)if(typeof n=="string"&&n.length>0)return n;try{let n=JSON.stringify(e);if(typeof n=="string"&&n.length>0)return n}catch{}return String(e)}function at(t){return typeof t=="number"&&Number.isFinite(t)?t:void 0}function Pe(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t,n=at(e.input_tokens),r=at(e.output_tokens),i=at(e.cache_read_input_tokens),s=at(e.cache_creation_input_tokens),d={};(n!==void 0||i!==void 0||s!==void 0)&&(d.promptTokens=(n??0)+(i??0)+(s??0)),r!==void 0&&(d.completionTokens=r),i!==void 0&&(d.cachedTokens=i);let u={};for(let[l,o]of Object.entries(e))l==="input_tokens"||l==="output_tokens"||o!=null&&(u[l]=o);return Object.keys(u).length>0&&(d.extra=u),d}function ee(t){if(typeof t=="string"&&t.length>0&&!Number.isNaN(Date.parse(t)))return t;if(typeof t=="number"&&Number.isFinite(t))return new Date(t).toISOString()}function lt(){let t={};return function(o){let a;try{a=JSON.parse(o);}catch{return null}if(a._meta||a._prompt)return null;let c=a.session_id;switch(a.type){case "system":return null;case "assistant":{let p=n(a.message?.content,"assistant")??[],g=Pe(a.message?.usage);return g&&p.push({sessionUpdate:"usage",scope:"call",usage:g}),e(p,a,c)}case "user":{let p=a.message?.content;if(typeof p=="string"||Array.isArray(p)&&p.length===1&&p[0].type==="text")return null;let g=a.tool_use_result??a.toolUseResult;return e(n(p,"user",g),a,c)}case "result":{let p=[],g=typeof a.total_cost_usd=="number"&&Number.isFinite(a.total_cost_usd)?a.total_cost_usd:void 0,f=Pe(a.usage)??(g!==void 0?{}:null);if(f&&(g!==void 0&&(f.costUsd=g),p.push({sessionUpdate:"usage",scope:"run",usage:f})),a.is_error===true){let m=(Array.isArray(a.errors)?a.errors:[]).filter(y=>typeof y=="string"&&y.length>0).join(`
3
3
  `);p.push({sessionUpdate:"error",message:P([m,a.result,a.subtype],a),fatal:true});}return e(p,a,c)}default:return null}};function e(l,o,a){if(!l||l.length===0)return null;let c=o.message,p=ee(o.timestamp),g=typeof c?.model=="string"&&c.model?c.model:void 0,f=typeof c?.id=="string"&&c.id?c.id:void 0,h=typeof o.parent_tool_use_id=="string"&&o.parent_tool_use_id?o.parent_tool_use_id:void 0,m={};for(let y of ["stop_reason","stop_sequence","requestId"]){let w=c?.[y];w!=null&&(m[y]=w);}return l.map(y=>({sessionId:a,update:y,...p!==void 0?{timestamp:p}:{},...g!==void 0?{model:g}:{},...f!==void 0?{messageId:f}:{},...h!==void 0?{parentToolCallId:h}:{},...Object.keys(m).length>0?{extra:m}:{}}))}function n(l,o,a){if(typeof l=="string")return o==="user"?null:[{sessionUpdate:"agent_message_chunk",content:{type:"text",text:l}}];if(!l||!Array.isArray(l))return null;let c=[];for(let p of l){let g=null;switch(p.type){case "text":case "text_delta":if(o==="user")break;g={sessionUpdate:"agent_message_chunk",content:{type:"text",text:p.text}};break;case "image":if(o==="user")break;g={sessionUpdate:"agent_message_chunk",content:{type:"image",data:p.source?.type==="base64"?p.source.data:"",mimeType:p.source?.type==="base64"?p.source.media_type:"",uri:p.source?.type==="url"?p.source.url:void 0}};break;case "thinking":case "thinking_delta":g={sessionUpdate:"agent_thought_chunk",content:{type:"text",text:p.thinking}};break;case "tool_use":case "server_tool_use":case "mcp_tool_use":{if(t[p.id]=p,p.name==="TodoWrite")Array.isArray(p.input?.todos)&&(g={sessionUpdate:"plan",entries:u(p.input)});else {let f=r(p);g={sessionUpdate:"tool_call",toolCallId:p.id,status:"pending",...f,toolName:p.name};}break}case "tool_result":case "tool_search_tool_result":case "web_fetch_tool_result":case "web_search_tool_result":case "code_execution_tool_result":case "bash_code_execution_tool_result":case "text_editor_code_execution_tool_result":case "mcp_tool_result":{let f=t[p.tool_use_id];if(!f||(delete t[p.tool_use_id],f.name==="TodoWrite"))break;g={sessionUpdate:"tool_call_update",toolCallId:p.tool_use_id,status:"is_error"in p&&p.is_error?"failed":"completed",...i(p,f),...a!=null?{rawOutput:a}:{}};break}}g&&c.push(g);}return c.length>0?c:null}function r(l){let o=l.name,a=l.input||{};switch(o){case "Task":return {title:a.description||"Task",kind:"think",content:a.prompt?[{type:"content",content:{type:"text",text:a.prompt}}]:[],rawInput:a};case "NotebookRead":return {title:a.notebook_path?`Read Notebook ${a.notebook_path}`:"Read Notebook",kind:"read",content:[],locations:a.notebook_path?[{path:a.notebook_path}]:[],rawInput:a};case "NotebookEdit":return {title:a.notebook_path?`Edit Notebook ${a.notebook_path}`:"Edit Notebook",kind:"edit",content:a.new_source?[{type:"content",content:{type:"text",text:a.new_source}}]:[],locations:a.notebook_path?[{path:a.notebook_path}]:[],rawInput:a};case "Bash":return {title:a.command?"`"+a.command.replaceAll("`","\\`")+"`":"Terminal",kind:"execute",content:a.description?[{type:"content",content:{type:"text",text:a.description}}]:[],rawInput:a};case "BashOutput":return {title:"Tail Logs",kind:"execute",content:[],rawInput:a};case "KillShell":return {title:"Kill Process",kind:"execute",content:[],rawInput:a};case "Read":{let c="";return a.limit?c=" ("+((a.offset??0)+1)+" - "+((a.offset??0)+a.limit)+")":a.offset&&(c=" (from line "+(a.offset+1)+")"),{title:"Read "+(a.file_path??"File")+c,kind:"read",content:[],locations:a.file_path?[{path:a.file_path,line:a.offset??0}]:[],rawInput:a}}case "LS":return {title:a.path?`List \`${a.path}\` directory`:"List current directory",kind:"search",content:[],locations:[],rawInput:a};case "Edit":{let c=a.file_path;return {title:c?`Edit \`${c}\``:"Edit",kind:"edit",content:c?[{type:"diff",path:c,oldText:a.old_string??null,newText:a.new_string??""}]:[],locations:c?[{path:c}]:[],rawInput:a}}case "Write":return {title:a.file_path?`Write ${a.file_path}`:"Write",kind:"edit",content:a.file_path?[{type:"diff",path:a.file_path,oldText:null,newText:a.content??""}]:[],locations:a.file_path?[{path:a.file_path}]:[],rawInput:a};case "Glob":{let c="Find";return a.path&&(c+=` \`${a.path}\``),a.pattern&&(c+=` \`${a.pattern}\``),{title:c,kind:"search",content:[],locations:a.path?[{path:a.path}]:[],rawInput:a}}case "Grep":{let c="grep";return a["-i"]&&(c+=" -i"),a["-n"]&&(c+=" -n"),a["-A"]!==void 0&&(c+=` -A ${a["-A"]}`),a["-B"]!==void 0&&(c+=` -B ${a["-B"]}`),a["-C"]!==void 0&&(c+=` -C ${a["-C"]}`),a.output_mode==="files_with_matches"?c+=" -l":a.output_mode==="count"&&(c+=" -c"),a.head_limit!==void 0&&(c+=` | head -${a.head_limit}`),a.glob&&(c+=` --include="${a.glob}"`),a.type&&(c+=` --type=${a.type}`),a.multiline&&(c+=" -P"),c+=` "${a.pattern??""}"`,a.path&&(c+=` ${a.path}`),{title:c,kind:"search",content:[],rawInput:a}}case "WebFetch":return {title:a.url?`Fetch ${a.url}`:"Fetch",kind:"fetch",content:a.prompt?[{type:"content",content:{type:"text",text:a.prompt}}]:[],rawInput:a};case "WebSearch":{let c=`"${a.query??""}"`;return a.allowed_domains?.length>0&&(c+=` (allowed: ${a.allowed_domains.join(", ")})`),a.blocked_domains?.length>0&&(c+=` (blocked: ${a.blocked_domains.join(", ")})`),{title:c,kind:"fetch",content:[],rawInput:a}}case "TodoWrite":return {title:Array.isArray(a.todos)?`Update TODOs: ${a.todos.map(c=>c.content).join(", ")}`:"Update TODOs",kind:"think",content:[],rawInput:a};case "ExitPlanMode":return {title:"Ready to code?",kind:"switch_mode",content:a.plan?[{type:"content",content:{type:"text",text:a.plan}}]:[],rawInput:a};default:if(o?.startsWith("mcp__")){let c=o.split("__"),p=c[1]||"mcp",g=c.slice(2).join("__")||o;return {title:`${p}: ${g}`,kind:"other",content:[],rawInput:a}}return {title:o||"Unknown Tool",kind:"other",content:[],rawInput:a}}}function i(l,o){return o?.name==="ExitPlanMode"?{title:"Exited Plan Mode"}:s(l.content)}function s(l){return Array.isArray(l)&&l.length>0?{content:l.map(o=>({type:"content",content:d(o)}))}:typeof l=="string"&&l.length>0?{content:[{type:"content",content:{type:"text",text:l}}]}:{}}function d(l){if(l.type==="text")return {type:"text",text:l.text};if(l.type==="image"){if(l.data&&l.mimeType)return {type:"image",data:l.data,mimeType:l.mimeType};if(l.source?.type==="base64")return {type:"image",data:l.source.data||"",mimeType:l.source.media_type||""};if(l.source?.type==="url")return {type:"image",data:"",mimeType:"",uri:l.source.url}}return l}function u(l){return l.todos.map(o=>({content:o.content,status:o.status||"pending",priority:"medium"}))}}function ct(){let e;return function(a){let c;try{c=JSON.parse(a);}catch{return null}if(c._meta||c._prompt)return null;let p=[];switch(c.type){case "thread.started":return typeof c.thread_id=="string"&&c.thread_id&&(e=c.thread_id),null;case "turn.started":return null;case "turn.completed":{let g=n(c.usage);if(!g)return null;p.push({update:{sessionUpdate:"usage",scope:"run",usage:g}});break}case "error":{let g=P([c.message],c);p.push({update:{sessionUpdate:"error",message:g,fatal:false}});break}case "turn.failed":{let g=P([c.error?.message],c.error??c);p.push({update:{sessionUpdate:"error",message:g,fatal:true}});break}case "item.started":{let g=c.item;if(!g)return null;let f=r(g);f&&p.push({update:f});break}case "item.updated":{let g=c.item;if(!g)return null;let f=i(g);f&&p.push({update:f});break}case "item.completed":{let g=c.item;if(!g)return null;let f=s(g);f&&p.push({update:f});break}default:return null}return p.length===0?null:e===void 0?p:p.map(g=>({sessionId:e,...g}))};function n(o){if(!o||typeof o!="object"||Array.isArray(o))return null;let a=o,c=y=>typeof y=="number"&&Number.isFinite(y)?y:void 0,p={},g=c(a.input_tokens),f=c(a.output_tokens),h=c(a.cached_input_tokens);g!==void 0&&(p.promptTokens=g),f!==void 0&&(p.completionTokens=f),h!==void 0&&(p.cachedTokens=h);let m={};for(let[y,w]of Object.entries(a))y==="input_tokens"||y==="output_tokens"||y==="cached_input_tokens"||w!=null&&(m[y]=w);return Object.keys(m).length>0&&(p.extra=m),p}function r(o){let a=o.id;switch(o.type){case "mcp_tool_call":return {type:"mcp_tool_call",name:`${o.server}:${o.tool}`},{sessionUpdate:"tool_call",toolCallId:a,title:`${o.server}: ${o.tool}`,toolName:`mcp__${o.server}__${o.tool}`,kind:"other",status:"in_progress",rawInput:o.arguments,content:[]};case "command_execution":return {type:"command_execution",name:o.command},{sessionUpdate:"tool_call",toolCallId:a,title:o.command?`\`${o.command}\``:"Execute Command",toolName:"command_execution",kind:"execute",status:"in_progress",rawInput:{command:o.command},content:[]};case "web_search":return {type:"web_search",name:o.query},{sessionUpdate:"tool_call",toolCallId:a,title:`Search: ${o.query??""}`,toolName:"web_search",kind:"fetch",status:"in_progress",content:[]};case "todo_list":return {sessionUpdate:"plan",entries:l(o.items)};default:return null}}function i(o){return o.type==="todo_list"?{sessionUpdate:"plan",entries:l(o.items)}:null}function s(o){let a=o.id;switch(o.type){case "error":return {sessionUpdate:"error",message:P([o.message],o),fatal:false};case "reasoning":return {sessionUpdate:"agent_thought_chunk",content:{type:"text",text:o.text??o.summary?.join(`
4
4
  `)??o.content?.join(`