@evolvingmachines/evolve 0.0.67 → 0.0.68

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 (61) hide show
  1. package/dist/chunk-FHL4GIAZ.js +1 -0
  2. package/dist/chunk-ORD7JDZB.js +1 -0
  3. package/dist/chunk-SQDR2TAW.js +427 -0
  4. package/dist/cli/index.cjs +38 -38
  5. package/dist/cli/index.d.cts +1 -1
  6. package/dist/cli/index.d.ts +1 -1
  7. package/dist/cli/index.js +30 -30
  8. package/dist/index.cjs +65 -60
  9. package/dist/index.d.cts +332 -29
  10. package/dist/index.d.ts +332 -29
  11. package/dist/index.js +48 -43
  12. package/dist/managed-modal-IXZBT4D5.js +4 -0
  13. package/dist/resumable-XNW5SKRW.js +1 -0
  14. package/dist/{types-84M4J_Vm.d.cts → types-DGx_qo9M.d.cts} +118 -77
  15. package/dist/{types-84M4J_Vm.d.ts → types-DGx_qo9M.d.ts} +118 -77
  16. package/harness-capabilities.json +325 -77
  17. package/hosted-error-codes.json +1 -0
  18. package/package.json +9 -7
  19. package/skills/create-adapter/SKILL.md +1 -1
  20. package/skills/create-task/SKILL.md +1 -1
  21. package/skills/evolve/SKILL.md +1 -1
  22. package/skills/evolve-evals/references/cli-reference/agent.md +1 -1
  23. package/skills/evolve-evals/references/cli-reference/analyze.md +6 -3
  24. package/skills/evolve-evals/references/cli-reference/check.md +4 -3
  25. package/skills/evolve-evals/references/cli-reference/index.md +1 -1
  26. package/skills/evolve-evals/references/cli-reference/run.md +4 -3
  27. package/skills/evolve-evals/references/core-concepts/agents.md +7 -3
  28. package/skills/evolve-evals/references/core-concepts/analyze.md +2 -2
  29. package/skills/evolve-evals/references/core-concepts/check.md +2 -2
  30. package/skills/evolve-evals/references/core-concepts/datasets.md +1 -1
  31. package/skills/evolve-evals/references/core-concepts/index.md +1 -1
  32. package/skills/evolve-evals/references/core-concepts/jobs.md +3 -3
  33. package/skills/evolve-evals/references/core-concepts/models.md +8 -9
  34. package/skills/evolve-evals/references/core-concepts/sandboxes.md +1 -1
  35. package/skills/evolve-evals/references/core-concepts/secrets.md +1 -1
  36. package/skills/evolve-evals/references/core-concepts/skills.md +1 -1
  37. package/skills/evolve-evals/references/core-concepts/task-verifiers.md +1 -1
  38. package/skills/evolve-evals/references/core-concepts/teams.md +1 -1
  39. package/skills/evolve-evals/references/core-concepts/upload.md +1 -1
  40. package/skills/evolve-evals/references/getting-started/first-task.md +1 -1
  41. package/skills/evolve-evals/references/getting-started/quick-start.md +1 -1
  42. package/skills/evolve-evals/references/index.md +1 -1
  43. package/skills/evolve-evals/references/sdk/http.md +1 -1
  44. package/skills/evolve-evals/references/sdk/python.md +1 -1
  45. package/skills/evolve-evals/references/sdk/typescript.md +1 -1
  46. package/skills/evolve-evals/references/sdk-reference/analyses.md +11 -4
  47. package/skills/evolve-evals/references/sdk-reference/checks.md +11 -4
  48. package/skills/evolve-evals/references/sdk-reference/error-codes.md +1 -0
  49. package/skills/evolve-evals/references/sdk-reference/jobs.md +2 -2
  50. package/skills/evolve-evals/references/sdk-reference/meta.md +2 -1
  51. package/skills/evolve-evals/references/sdk-reference/methods/analyses.md +6 -4
  52. package/skills/evolve-evals/references/sdk-reference/methods/checks.md +8 -4
  53. package/skills/evolve-evals/references/sdk-reference/methods/jobs.md +5 -3
  54. package/skills/evolve-evals/references/sdk-reference/methods/meta.md +15 -4
  55. package/skills/evolve-evals/references/sdk-reference/skills.md +2 -2
  56. package/skills/evolve-evals/references/sdk-reference/types.md +11 -5
  57. package/spec/openapi.yaml +290 -137
  58. package/dist/chunk-HQJI3HHU.js +0 -1
  59. package/dist/chunk-RFLMRPGK.js +0 -427
  60. package/dist/managed-modal-IJW62SSK.js +0 -4
  61. package/dist/resumable-HFSICSH3.js +0 -1
package/dist/index.cjs CHANGED
@@ -1,33 +1,38 @@
1
- 'use strict';var dc=require('zlib'),ee=require('fs'),promises=require('fs/promises'),os$1=require('os'),Z=require('path'),promises$1=require('stream/promises'),tarStream=require('tar-stream'),crypto=require('crypto'),http=require('http'),https=require('https'),events=require('events'),$p=require('ajv'),smolToml=require('smol-toml'),child_process=require('child_process'),util=require('util'),Qc=require('zod-to-json-schema'),stream=require('stream'),zod=require('zod'),e2b=require('@evolvingmachines/e2b'),daytona=require('@evolvingmachines/daytona'),modal=require('@evolvingmachines/modal');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var dc__default=/*#__PURE__*/_interopDefault(dc);var ee__namespace=/*#__PURE__*/_interopNamespace(ee);var Z__namespace=/*#__PURE__*/_interopNamespace(Z);var $p__default=/*#__PURE__*/_interopDefault($p);var Qc__default=/*#__PURE__*/_interopDefault(Qc);var Sl=Object.defineProperty;var We=(t,e)=>()=>(t&&(e=t(t=0)),e);var Ut=(t,e)=>{for(var n in e)Sl(t,n,{get:e[n],enumerable:true});};var _r={};Ut(_r,{MAX_INLINE_ARCHIVE_BYTES:()=>Ci,crc32Fallback:()=>Si,extractTarGz:()=>Oc,shouldStore:()=>vi,tarGzTopLevelName:()=>Mc,tarGzipDirectory:()=>Ic,tarGzipDirectoryToFile:()=>xi});async function xc(t){let e=[],n=async r=>{let s=r===""?t:Z.join(t,r),a=await promises.readdir(s,{withFileTypes:true});a.sort((d,u)=>d.name<u.name?-1:d.name>u.name?1:0);for(let d of a){if(Sc.has(d.name))continue;let u=r===""?d.name:`${r}/${d.name}`,c=Z.join(s,d.name),i=await promises.lstat(c);i.isSymbolicLink()||(i.isDirectory()?await n(u):i.isFile()&&e.push({rel:u,abs:c,mode:i.mode&73?493:420,size:i.size}));}};return await n(""),e.sort((r,s)=>r.rel<s.rel?-1:r.rel>s.rel?1:0)}async function vi(t,e){if(e<Cc)return false;let n=await promises.open(t,"r"),r;try{let a=Buffer.allocUnsafe(hi),{bytesRead:d}=await n.read(a,0,hi,0);r=a.subarray(0,d);}finally{await n.close();}return r.length===0?false:dc.deflateRawSync(r,{level:1}).length*20>=r.length*19}function Si(t,e=0){let n=~e;for(let r=0;r<t.length;r++)n=Tc[(n^t[r])&255]^n>>>8;return ~n>>>0}async function Ac(t){let e=Symbol("pending"),n=await Promise.race([t,Promise.resolve(e)]);return n===e?null:n}async function xi(t,e){let n=await xc(t),r=tarStream.pack(),s=ee.createWriteStream(e);s.on("error",()=>{}),r.on("error",()=>{});let a=new yr(s),d=r[Symbol.asyncIterator](),u=null,c=()=>u??=d.next();try{for(let{rel:i,abs:o,mode:l,size:p}of n){await a.setStored(await vi(o,p));let g=r.entry({name:i,size:p,mode:l,mtime:new Date(0),uid:0,gid:0,uname:"",gname:"",type:"file"}),m=promises$1.pipeline(ee.createReadStream(o),g),h=!1,f=null;for(m.then(()=>{},()=>{}).then(()=>{h=!0,f?.(yi);});;){if(!h){let b=await new Promise((_,w)=>{f=_,c().then(_,w);});if(f=null,b===yi)continue;if(u=null,b.done)break;await a.write(b.value);continue}await new Promise(b=>setImmediate(b));let y=await Ac(c());if(y===null||(u=null,y.done))break;await a.write(y.value);}await m;}for(r.finalize();;){let i=await c();if(u=null,i.done)break;await a.write(i.value);}await a.close(),s.end(),await promises$1.finished(s);}catch(i){throw u?.catch(()=>{}),r.destroy(),s.destroy(),i}}async function Ic(t,e=Ci){let n=await promises.mkdtemp(Z.join(os$1.tmpdir(),"evolve-tar-"));try{let r=Z.join(n,"archive.tar.gz");await xi(t,r);let{size:s}=await promises.stat(r);if(s>e)throw new Error(`directory ${t} tars to ${s} bytes compressed \u2014 over the ${e}-byte cap for in-memory archives. Only the sandbox skill mount uses this path; a skill folder this large is not mountable.`);return await promises.readFile(r)}finally{await promises.rm(n,{recursive:true,force:true});}}async function Oc(t,e,n){let r=tarStream.extract(),s=[],a=(async()=>{for await(let d of r){let u=d.header.name,c=u.split("/").filter(o=>o!==""&&o!==".");if(u.startsWith("/")||u.includes("\\")||c.length===0||c.some(o=>o===".."))throw new Error(`refusing to extract "${u}": the path escapes the target directory`);if(c[0]!==n)throw new Error(`refusing to extract "${u}": entry outside ${n}/`);if(d.header.type==="directory"){await promises.mkdir(Z.join(e,...c),{recursive:true}),d.resume();continue}if(d.header.type!=="file")throw new Error(`refusing to extract "${u}": unsupported entry type "${d.header.type}"`);let i=Z.join(e,...c);await promises.mkdir(Z.dirname(i),{recursive:true}),await promises$1.pipeline(d,ee.createWriteStream(i)),s.push(c.join("/"));}})();try{await Promise.all([promises$1.pipeline(ee.createReadStream(t),dc.createGunzip(),r),a]);}catch(d){throw r.destroy(),d}return s}async function Mc(t){let e=tarStream.extract(),n=null,r=(async()=>{for await(let s of e){let a=s.header.name,d=a.split("/").filter(u=>u!==""&&u!==".");if(a.startsWith("/")||a.includes("\\")||d.length===0||d.some(u=>u===".."))throw new Error(`refusing to extract "${a}": the path escapes the target directory`);if(n===null)n=d[0];else if(d[0]!==n)throw new Error(`refusing to extract "${a}": the archive holds more than one top-level directory (${n}/)`);s.resume();}})();try{await Promise.all([promises$1.pipeline(ee.createReadStream(t),dc.createGunzip(),e),r]);}catch(s){throw e.destroy(),s}if(n===null)throw new Error("refusing to extract: the archive holds no entries");return n}var Sc,Cc,hi,Rc,Ec,hr,Tc,Pc,yr,yi,Ci,wr=We(()=>{Sc=new Set([".git",".DS_Store",".venv"]);Cc=64*1024,hi=128*1024,Rc=65535,Ec=1024*1024,hr=32*1024;Tc=(()=>{let t=new Uint32Array(256);for(let e=0;e<256;e++){let n=e;for(let r=0;r<8;r++)n=n&1?3988292384^n>>>1:n>>>1;t[e]=n;}return t})(),Pc=dc__default.default.crc32??Si,yr=class t{constructor(e){this.sink=e;}static HEADER=Buffer.from([31,139,8,0,0,0,0,0,0,255]);static FINAL_BLOCK=Buffer.from([1,0,0,255,255]);crc=0;plainLength=0;held=[];heldBytes=0;window=null;stored=false;started=false;async setStored(e){e!==this.stored&&(await this.drainHeld(true),this.stored=e);}async write(e){this.started||(this.started=true,await this.out(t.HEADER)),this.held.push(e),this.heldBytes+=e.length,await this.drainHeld(false);}async close(){this.started||(this.started=true,await this.out(t.HEADER)),await this.drainHeld(true),await this.out(t.FINAL_BLOCK);let e=Buffer.allocUnsafe(8);e.writeUInt32LE(this.crc>>>0,0),e.writeUInt32LE(this.plainLength%4294967296,4),await this.out(e);}async drainHeld(e){let n=this.stored?Rc:Ec;for(;this.heldBytes>=n||e&&this.heldBytes>0;){let r=this.held.length===1?this.held[0]:Buffer.concat(this.held,this.heldBytes),s=Math.min(n,r.length),a=r.subarray(s);this.held=a.length>0?[a]:[],this.heldBytes=a.length,await this.emitBlock(r.subarray(0,s));}}async emitBlock(e){if(this.crc=Pc(e,this.crc),this.plainLength+=e.length,this.stored){let n=Buffer.allocUnsafe(5+e.length);n[0]=0,n.writeUInt16LE(e.length,1),n.writeUInt16LE(e.length^65535,3),e.copy(n,5),await this.out(n);}else await this.out(dc.deflateRawSync(e,{level:9,finishFlush:dc.constants.Z_SYNC_FLUSH,...this.window?{dictionary:this.window}:{}}));this.window=e.length>=hr?Buffer.from(e.subarray(e.length-hr)):this.window?Buffer.concat([this.window,e]).subarray(-hr):Buffer.from(e);}out(e){return new Promise((n,r)=>{this.sink.write(e,s=>s==null?n():r(s));})}},yi=Symbol("feed settled");Ci=256*1024*1024;});var Bi={};Ut(Bi,{ManagedModalProvider:()=>Br,ManagedModalWriteLimitError:()=>un,_testManagedModalSandbox:()=>rd});function nd(t){if(typeof t=="string")return new TextEncoder().encode(t);if(t instanceof Uint8Array)return new Uint8Array(t);if(t instanceof ArrayBuffer)return new Uint8Array(t);throw new Error(`Unsupported data type: ${typeof t}`)}function Fi(t){return {sandboxId:t.sandboxId,image:t.image??"",metadata:t.metadata??{},startedAt:t.startedAt??""}}var un,pn,$r,Fr,ot,Br,rd,Ni=We(()=>{un=class extends Error{bytes;constructor(e,n){super(`Managed Modal ${e} body is ${n} bytes; the managed door caps every request at 1048576 bytes (1 MiB) of wire bytes, base64 inflation included. Split the payload into smaller writes.`),this.name="ManagedModalWriteLimitError",this.bytes=n;}};pn=class{constructor(e){this.config=e;}async request(e,n,r){let s=await fetch(`${this.config.baseUrl}${n}`,{...r,headers:{authorization:`Bearer ${this.config.apiKey}`,...r.headers??{}}});if(!s.ok){let a="";try{a=(await s.json())?.error??"";}catch{}throw new Error(`Managed Modal ${e} failed (${s.status})${a?`: ${a}`:""}`)}return s}json(e){return {method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(e)}}},$r=class{constructor(e,n){this.door=e;this.sandboxId=n;}async run(e,n){let r=await this.door.request("exec",`/sandboxes/${encodeURIComponent(this.sandboxId)}/exec`,this.door.json({command:e,...n?.cwd?{cwd:n.cwd}:{},...n?.envs?{envs:n.envs}:{},...n?.timeoutMs!==void 0?{timeoutMs:n.timeoutMs}:{}})),s="",a="",d,u=c=>{if(!c.trim())return;let i;try{i=JSON.parse(c);}catch{throw new Error(`Managed Modal exec stream carried a garbled record: ${c}`)}i.stream==="stdout"&&typeof i.data=="string"?(s+=i.data,n?.onStdout?.(i.data)):i.stream==="stderr"&&typeof i.data=="string"?(a+=i.data,n?.onStderr?.(i.data)):d=i;};if(r.body){let c=r.body.getReader(),i=new TextDecoder,o="";for(;;){let{done:l,value:p}=await c.read();if(l)break;o+=i.decode(p,{stream:true});let g;for(;(g=o.indexOf(`
2
- `))!==-1;)u(o.slice(0,g)),o=o.slice(g+1);}o+=i.decode(),u(o);}else for(let c of (await r.text()).split(`
3
- `))u(c);if(d?.error!==void 0)throw new Error(`Managed Modal exec failed: ${d.error}`);if(typeof d?.exitCode!="number")throw new Error("Managed Modal exec stream ended without a terminal record \u2014 the connection died mid-run.");return {exitCode:d.exitCode,stdout:s,stderr:a}}async spawn(e,n){let r=this.run(e,n);return r.catch(()=>{}),{processId:`managed-modal-${Date.now()}-${Math.random().toString(36).slice(2)}`,wait:()=>r,kill:async()=>false}}async list(){return (await this.run("ps -eo pid,comm,args")).stdout.trim().split(`
4
- `).slice(1).filter(r=>r.trim()).map(r=>{let s=r.trim().split(/\s+/);return {processId:s[0],cmd:s[1]||"",args:s.slice(2),envs:{}}})}async kill(e){return /^\d+$/.test(e)?(await this.run(`kill -9 ${e}`)).exitCode===0:false}},Fr=class{constructor(e,n){this.door=e;this.sandboxId=n;}filesPath(e){return `/sandboxes/${encodeURIComponent(this.sandboxId)}/files/${e}`}encodeContent(e){return typeof e=="string"?{content:e}:{content:Buffer.from(nd(e)).toString("base64"),encoding:"base64"}}boundedJson(e,n){let r=this.door.json(n),s=Buffer.byteLength(r.body,"utf8");if(s>1048576)throw new un(e,s);return r}async read(e){let r=await(await this.door.request("file read",this.filesPath("read"),this.door.json({path:e}))).json();return r.encoding==="base64"?new Uint8Array(Buffer.from(r.content??"","base64")):r.content??""}async write(e,n){await this.door.request("file write",this.filesPath("write"),this.boundedJson("file write",{path:e,...this.encodeContent(n)}));}async writeBatch(e){e.length!==0&&await this.door.request("file writeBatch",this.filesPath("writeBatch"),this.boundedJson("file writeBatch",{files:e.map(n=>({path:n.path,...this.encodeContent(n.data)}))}));}async makeDir(e){await this.door.request("makeDir",this.filesPath("makeDir"),this.door.json({path:e}));}};ot=class{constructor(e,n){this.door=e;this.sandboxId=n;this.commands=new $r(e,n),this.files=new Fr(e,n);}commands;files;async getHost(e){throw new Error("Managed Modal sandboxes expose no tunnels, so getHost() is unavailable through the managed door.")}async kill(){try{await this.door.request("kill",`/sandboxes/${encodeURIComponent(this.sandboxId)}`,{method:"DELETE"});}catch(e){if(e instanceof Error&&e.message.includes("(404)"))return;throw e}}async pause(){throw new Error("Modal does not support pause/resume. Persist progress with Evolve checkpoints and resume in a fresh sandbox, or use kill() to terminate.")}async isRunning(){try{return await this.getInfo(),!0}catch(e){if(e instanceof Error&&e.message.includes("(404)"))return false;throw e}}async getInfo(){let e=await this.door.request("get",`/sandboxes/${encodeURIComponent(this.sandboxId)}`,{method:"GET"});return Fi(await e.json())}},Br=class{providerType="modal";name="Managed Modal";door;constructor(e){this.door=new pn(e);}async create(e){if(e.resources!==void 0)throw new Error("Managed Modal sandboxes are platform-sized; `resources` cannot be enforced through the managed door.");if(e.network!==void 0)throw new Error("Managed Modal sandboxes run the platform's network policy; `network` cannot be enforced through the managed door.");if(e.user!==void 0)throw new Error("Managed Modal sandboxes run as the platform's sandbox user; `user` cannot be enforced through the managed door.");if(e.idleTimeoutMs!==void 0)throw new Error("The managed Modal door takes no idle timeout; bound the sandbox with `timeoutMs` instead.");if(e.bootCommand!==void 0)throw new Error("Managed Modal sandboxes boot the platform image as configured; `bootCommand` cannot be enforced through the managed door.");let r=await(await this.door.request("create","/sandboxes",this.door.json({...e.image?{image:e.image}:{},...e.timeoutMs!==void 0?{timeoutMs:e.timeoutMs}:{},...e.workingDirectory?{workingDirectory:e.workingDirectory}:{},...e.envs?{envs:e.envs}:{},...e.metadata?{metadata:e.metadata}:{}}))).json();return new ot(this.door,r.sandboxId)}async connect(e,n){let r=new ot(this.door,e);return await r.getInfo(),r}async list(e){if(e?.state&&!e.state.includes("running"))return [];let s=((await(await this.door.request("list","/sandboxes",{method:"GET"})).json()).sandboxes??[]).map(Fi);if(e?.metadata){let a=Object.entries(e.metadata);s=s.filter(d=>a.every(([u,c])=>d.metadata[u]===c));}return e?.limit!==void 0&&(s=s.slice(0,e.limit)),s}async listAll(e){if(e?.state&&!e.state.includes("running"))return {sandboxes:[],complete:true,pagesFetched:0};let n;try{n=await this.list({...e,limit:void 0});}catch(a){return {sandboxes:[],complete:false,pagesFetched:0,error:`sandbox list failed: ${a instanceof Error?a.message:String(a)}`}}let r=e?.limit!==void 0?n.slice(0,e.limit):n,s=r.length<n.length;return {sandboxes:r,complete:!s,pagesFetched:1,...s?{error:`stopped at the requested limit of ${e?.limit} with more sandboxes available`}:{}}}},rd=(t,e)=>new ot(new pn(t),e);});function yt(t,e){try{let a=JSON.parse(t)?.error?.retryAfterSec;if(typeof a=="number"&&Number.isFinite(a))return a}catch{}let n=e.headers?.get?.("retry-after");if(typeof n!="string"||n.trim()==="")return;let r=Number(n);return Number.isFinite(r)?r:void 0}var cs=We(()=>{});var ca={};Ut(ca,{RESUMABLE_UPLOAD_CHUNK_BYTES:()=>ia,RESUMABLE_UPLOAD_MAX_ATTEMPTS:()=>bt,RESUMABLE_UPLOAD_MAX_RATE_LIMIT_WAITS:()=>oa,RESUMABLE_UPLOAD_MAX_RETRY_AFTER_SEC:()=>aa,RESUMABLE_UPLOAD_THRESHOLD_BYTES:()=>_t,retryAfterWaitMs:()=>la,setResumableUploadThresholdBytes:()=>wu,uploadArchiveResumable:()=>Cu});function wu(t){_t=t;}async function vu(t){let e=await promises.open(t,"r");try{let n=crypto.createHash("sha256"),r=Buffer.alloc(1024*1024);for(;;){let{bytesRead:s}=await e.read(r,0,r.length);if(s===0)break;n.update(r.subarray(0,s));}return n.digest("hex")}finally{await e.close();}}function us(t){return Math.min(500*2**(t-1),4e3)}function la(t,e){let n=t===void 0?0:t*1e3;return Math.min(Math.max(n,us(e)),aa*1e3)}async function ds(t,e,n){let r=new AbortController,s=setTimeout(()=>r.abort(),n);s.unref?.();try{return await fetch(t,{...e,signal:r.signal})}finally{clearTimeout(s);}}async function _n(t){for(let e=0;;e+=1){let n=await t();if(!Su(n)||e>=oa)return n;let r=await n.text().catch(()=>"");await ps(la(yt(r,n),e+1));}}function xu(t,e,n){return new Promise((r,s)=>{let a=new URL(t),u=(a.protocol==="https:"?https.request:http.request)(a,{method:"POST",headers:e}),c=setTimeout(()=>{u.destroy(new Error(`finalize timed out: no response for ${Math.round(n/1e3)}s`));},n);c.unref?.(),u.on("error",i=>{clearTimeout(c),s(i);}),u.on("response",i=>{let o=[];i.on("data",l=>o.push(l)),i.on("error",l=>{clearTimeout(c),s(l);}),i.on("end",()=>{clearTimeout(c);let l=new Headers;for(let[m,h]of Object.entries(i.headers))if(typeof h=="string")l.set(m,h);else if(Array.isArray(h))for(let f of h)l.append(m,f);let p=i.statusCode??0,g=p!==204&&p!==205&&p!==304;r(new Response(g?Buffer.concat(o):null,{status:p,statusText:i.statusMessage??"",headers:l}));});}),u.end();})}async function Cu(t){let e=t.timeoutMs??ku,n=t.chunkBytes??ia,{size:r}=await promises.stat(t.file.path),s=await vu(t.file.path),a=`${t.baseUrl}${t.sessionsPath??"/api/datasets/publish/uploads"}`,d={...t.headers,"Content-Type":"application/json"},u={size:r,sha256:s};for(let[g,m]of Object.entries(t.fields))m!==void 0&&(u[g]=m);let c=await _n(()=>ds(a,{method:"POST",headers:d,body:JSON.stringify(u)},e));if(!c.ok)return c;let i=await c.json(),o=`${a}/${i.id}`;typeof i.import_id=="string"&&i.import_id!==""&&t.onRegistered?.(i.import_id);let l=async()=>{let g=await _n(()=>ds(o,{method:"HEAD",headers:t.headers},e));if(!g.ok)throw new Error(`upload session probe failed: HTTP ${g.status}`);let m=Number(g.headers.get("upload-offset"));if(!Number.isInteger(m))throw new Error("upload session probe did not return Upload-Offset");return m},p=await promises.open(t.file.path,"r");try{let g=0,m=0,h=Buffer.alloc(n);for(;g<r;){let y=Math.min(n,r-g),{bytesRead:b}=await p.read(h,0,y,g);if(b!==y)throw new Error(`archive shrank mid-upload: read ${b} of ${y} bytes at offset ${g}`);let _=h.subarray(0,y),w=crypto.createHash("sha256").update(_).digest(),S;try{S=await _n(()=>ds(o,{method:"PATCH",headers:{...t.headers,"Content-Type":"application/offset+octet-stream","Upload-Offset":String(g),"Upload-Checksum":`sha256 ${w.toString("base64")}`},body:new Uint8Array(_)},e));}catch(x){if(m+=1,m>=bt)throw x;await ps(us(m));try{g=await l();}catch{}continue}if(S.status===409){if(m+=1,m>=bt)return S;g=await l();continue}if(!S.ok)return S;let v=Number(S.headers.get("upload-offset"));if(!Number.isInteger(v)||v<=g)throw new Error("resumable upload did not advance Upload-Offset");g=v,m=0,t.onBytes?.(g,r);}let f;for(let y=1;y<=bt;y++)try{return await _n(()=>xu(`${o}/complete`,t.headers,e))}catch(b){f=b,y<bt&&await ps(us(y));}throw f}finally{await p.close();}}var _t,ia,bt,oa,aa,ku,ps,Su,gs=We(()=>{cs();_t=256*1024*1024;ia=6*1024*1024,bt=4,oa=3,aa=60,ku=6e5;ps=t=>new Promise(e=>setTimeout(e,t));Su=t=>t.status===429||t.status===503;});var Ta={};Ut(Ta,{EvolveUploadTimeoutError:()=>exports.EvolveUploadTimeoutError,UPLOAD_TIMEOUT_MS:()=>vs,postMultipartFile:()=>Fu});function Ea(t,e){return new Promise((n,r)=>{t.write(e,s=>s?r(s):n());})}async function Fu(t){let e=`----evolve${crypto.randomUUID().replace(/-/g,"")}`,n=[];for(let[_,w]of Object.entries(t.fields))w!==void 0&&n.push(`--${e}\r
5
- Content-Disposition: form-data; name="${_}"\r
1
+ 'use strict';var Au=require('zlib'),he=require('fs'),promises=require('fs/promises'),os$1=require('os'),fe=require('path'),promises$1=require('stream/promises'),tarStream=require('tar-stream'),crypto=require('crypto'),http=require('http'),https=require('https'),events=require('events'),nf=require('ajv'),smolToml=require('smol-toml'),yaml=require('yaml'),child_process=require('child_process'),util=require('util'),bp=require('zod-to-json-schema'),stream=require('stream'),zod=require('zod'),e2b=require('@evolvingmachines/e2b'),daytona=require('@evolvingmachines/daytona'),modal=require('@evolvingmachines/modal');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var Au__default=/*#__PURE__*/_interopDefault(Au);var he__namespace=/*#__PURE__*/_interopNamespace(he);var fe__namespace=/*#__PURE__*/_interopNamespace(fe);var nf__default=/*#__PURE__*/_interopDefault(nf);var bp__default=/*#__PURE__*/_interopDefault(bp);var qc=Object.defineProperty;var yt=(t,e)=>()=>(t&&(e=t(t=0)),e);var rn=(t,e)=>{for(var n in e)qc(t,n,{get:e[n],enumerable:true});};var Rs={};rn(Rs,{MAX_INLINE_ARCHIVE_BYTES:()=>Qo,crc32Fallback:()=>Zo,extractTarGz:()=>Xu,shouldStore:()=>Yo,tarGzTopLevelName:()=>Qu,tarGzipDirectory:()=>Zu,tarGzipDirectoryToFile:()=>Xo});async function Vu(t){let e=[],n=async r=>{let s=r===""?t:fe.join(t,r),o=await promises.readdir(s,{withFileTypes:true});o.sort((c,u)=>c.name<u.name?-1:c.name>u.name?1:0);for(let c of o){if(Ku.has(c.name))continue;let u=r===""?c.name:`${r}/${c.name}`,l=fe.join(s,c.name),i=await promises.lstat(l);i.isSymbolicLink()||(i.isDirectory()?await n(u):i.isFile()&&e.push({rel:u,abs:l,mode:i.mode&73?493:420,size:i.size}));}};return await n(""),e.sort((r,s)=>r.rel<s.rel?-1:r.rel>s.rel?1:0)}async function Yo(t,e){if(e<Gu)return false;let n=await promises.open(t,"r"),r;try{let o=Buffer.allocUnsafe(Vo),{bytesRead:c}=await n.read(o,0,Vo,0);r=o.subarray(0,c);}finally{await n.close();}return r.length===0?false:Au.deflateRawSync(r,{level:1}).length*20>=r.length*19}function Zo(t,e=0){let n=~e;for(let r=0;r<t.length;r++)n=qu[(n^t[r])&255]^n>>>8;return ~n>>>0}async function Yu(t){let e=Symbol("pending"),n=await Promise.race([t,Promise.resolve(e)]);return n===e?null:n}async function Xo(t,e){let n=await Vu(t),r=tarStream.pack(),s=he.createWriteStream(e);s.on("error",()=>{}),r.on("error",()=>{});let o=new Ss(s),c=r[Symbol.asyncIterator](),u=null,l=()=>u??=c.next();try{for(let{rel:i,abs:a,mode:d,size:p}of n){await o.setStored(await Yo(a,p));let g=r.entry({name:i,size:p,mode:d,mtime:new Date(0),uid:0,gid:0,uname:"",gname:"",type:"file"}),m=promises$1.pipeline(he.createReadStream(a),g),f=!1,h=null;for(m.then(()=>{},()=>{}).then(()=>{f=!0,h?.(Go);});;){if(!f){let _=await new Promise((w,y)=>{h=w,l().then(w,y);});if(h=null,_===Go)continue;if(u=null,_.done)break;await o.write(_.value);continue}await new Promise(_=>setImmediate(_));let b=await Yu(l());if(b===null||(u=null,b.done))break;await o.write(b.value);}await m;}for(r.finalize();;){let i=await l();if(u=null,i.done)break;await o.write(i.value);}await o.close(),s.end(),await promises$1.finished(s);}catch(i){throw u?.catch(()=>{}),r.destroy(),s.destroy(),i}}async function Zu(t,e=Qo){let n=await promises.mkdtemp(fe.join(os$1.tmpdir(),"evolve-tar-"));try{let r=fe.join(n,"archive.tar.gz");await Xo(t,r);let{size:s}=await promises.stat(r);if(s>e)throw new Error(`directory ${t} tars to ${s} bytes compressed \u2014 over the ${e}-byte cap for in-memory archives. Only the sandbox skill mount uses this path; a skill folder this large is not mountable.`);return await promises.readFile(r)}finally{await promises.rm(n,{recursive:true,force:true});}}async function Xu(t,e,n){let r=tarStream.extract(),s=[],o=(async()=>{for await(let c of r){let u=c.header.name,l=u.split("/").filter(a=>a!==""&&a!==".");if(u.startsWith("/")||u.includes("\\")||l.length===0||l.some(a=>a===".."))throw new Error(`refusing to extract "${u}": the path escapes the target directory`);if(l[0]!==n)throw new Error(`refusing to extract "${u}": entry outside ${n}/`);if(c.header.type==="directory"){await promises.mkdir(fe.join(e,...l),{recursive:true}),c.resume();continue}if(c.header.type!=="file")throw new Error(`refusing to extract "${u}": unsupported entry type "${c.header.type}"`);let i=fe.join(e,...l);await promises.mkdir(fe.dirname(i),{recursive:true}),await promises$1.pipeline(c,he.createWriteStream(i)),s.push(l.join("/"));}})();try{await Promise.all([promises$1.pipeline(he.createReadStream(t),Au.createGunzip(),r),o]);}catch(c){throw r.destroy(),c}return s}async function Qu(t){let e=tarStream.extract(),n=null,r=(async()=>{for await(let s of e){let o=s.header.name,c=o.split("/").filter(u=>u!==""&&u!==".");if(o.startsWith("/")||o.includes("\\")||c.length===0||c.some(u=>u===".."))throw new Error(`refusing to extract "${o}": the path escapes the target directory`);if(n===null)n=c[0];else if(c[0]!==n)throw new Error(`refusing to extract "${o}": the archive holds more than one top-level directory (${n}/)`);s.resume();}})();try{await Promise.all([promises$1.pipeline(he.createReadStream(t),Au.createGunzip(),e),r]);}catch(s){throw e.destroy(),s}if(n===null)throw new Error("refusing to extract: the archive holds no entries");return n}var Ku,Gu,Vo,zu,Hu,vs,qu,Wu,Ss,Go,Qo,Cs=yt(()=>{Ku=new Set([".git",".DS_Store",".venv"]);Gu=64*1024,Vo=128*1024,zu=65535,Hu=1024*1024,vs=32*1024;qu=(()=>{let t=new Uint32Array(256);for(let e=0;e<256;e++){let n=e;for(let r=0;r<8;r++)n=n&1?3988292384^n>>>1:n>>>1;t[e]=n;}return t})(),Wu=Au__default.default.crc32??Zo,Ss=class t{constructor(e){this.sink=e;}static HEADER=Buffer.from([31,139,8,0,0,0,0,0,0,255]);static FINAL_BLOCK=Buffer.from([1,0,0,255,255]);crc=0;plainLength=0;held=[];heldBytes=0;window=null;stored=false;started=false;async setStored(e){e!==this.stored&&(await this.drainHeld(true),this.stored=e);}async write(e){this.started||(this.started=true,await this.out(t.HEADER)),this.held.push(e),this.heldBytes+=e.length,await this.drainHeld(false);}async close(){this.started||(this.started=true,await this.out(t.HEADER)),await this.drainHeld(true),await this.out(t.FINAL_BLOCK);let e=Buffer.allocUnsafe(8);e.writeUInt32LE(this.crc>>>0,0),e.writeUInt32LE(this.plainLength%4294967296,4),await this.out(e);}async drainHeld(e){let n=this.stored?zu:Hu;for(;this.heldBytes>=n||e&&this.heldBytes>0;){let r=this.held.length===1?this.held[0]:Buffer.concat(this.held,this.heldBytes),s=Math.min(n,r.length),o=r.subarray(s);this.held=o.length>0?[o]:[],this.heldBytes=o.length,await this.emitBlock(r.subarray(0,s));}}async emitBlock(e){if(this.crc=Wu(e,this.crc),this.plainLength+=e.length,this.stored){let n=Buffer.allocUnsafe(5+e.length);n[0]=0,n.writeUInt16LE(e.length,1),n.writeUInt16LE(e.length^65535,3),e.copy(n,5),await this.out(n);}else await this.out(Au.deflateRawSync(e,{level:9,finishFlush:Au.constants.Z_SYNC_FLUSH,...this.window?{dictionary:this.window}:{}}));this.window=e.length>=vs?Buffer.from(e.subarray(e.length-vs)):this.window?Buffer.concat([this.window,e]).subarray(-vs):Buffer.from(e);}out(e){return new Promise((n,r)=>{this.sink.write(e,s=>s==null?n():r(s));})}},Go=Symbol("feed settled");Qo=256*1024*1024;});function $e(t,e){try{let r=JSON.parse(t)?.error?.retryAfterSec;if(typeof r=="number"&&Number.isFinite(r))return r}catch{}return Ns(e.headers?.get?.("retry-after"))}function Ns(t){if(typeof t!="string"||t.trim()==="")return;let e=Number(t);return Number.isFinite(e)?e:void 0}async function oa(t,e,n){let r=n.baseDelayMs;for(let s=1;;s++)try{return await t()}catch(o){let c=e(o);if(!c||s>=n.attempts)throw o;let u=(c.retryAfterSec??0)*1e3,l=Math.min(Math.max(u,r),n.maxDelayMs);await new Promise(i=>setTimeout(i,l)),r=Math.min(r*2,n.maxDelayMs);}}var Tt=yt(()=>{});var ca={};rn(ca,{ManagedModalDoorError:()=>et,ManagedModalProvider:()=>Js,ManagedModalWriteLimitError:()=>rr,_testManagedModalSandbox:()=>wp});function _p(t){if(typeof t=="string")return new TextEncoder().encode(t);if(t instanceof Uint8Array)return new Uint8Array(t);if(t instanceof ArrayBuffer)return new Uint8Array(t);throw new Error(`Unsupported data type: ${typeof t}`)}function la(t){return {sandboxId:t.sandboxId,image:t.image??"",metadata:t.metadata??{},startedAt:t.startedAt??""}}var aa,rr,et,sr,Bs,js,Pt,Js,wp,da=yt(()=>{Tt();aa=1024*1024,rr=class extends Error{bytes;constructor(e,n){super(`Managed Modal ${e} body is ${n} bytes; the managed door caps every request at ${aa} bytes (1 MiB) of wire bytes, base64 inflation included. Split the payload into smaller writes.`),this.name="ManagedModalWriteLimitError",this.bytes=n;}},et=class extends Error{status;retryAfterSec;constructor(e,n,r,s){super(`Managed Modal ${e} failed (${n})${r?`: ${r}`:""}`),this.name="ManagedModalDoorError",this.status=n,s!==void 0&&(this.retryAfterSec=s);}};sr=class{constructor(e){this.config=e;}async request(e,n,r){let s=await fetch(`${this.config.baseUrl}${n}`,{...r,headers:{authorization:`Bearer ${this.config.apiKey}`,...r.headers??{}}});if(!s.ok){let o=await s.text().catch(()=>""),c="";try{let u=JSON.parse(o);typeof u?.error=="string"&&(c=u.error);}catch{}throw new et(e,s.status,c,$e(o,s))}return s}json(e){return {method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(e)}}},Bs=class{constructor(e,n){this.door=e;this.sandboxId=n;}async run(e,n){let r=await this.door.request("exec",`/sandboxes/${encodeURIComponent(this.sandboxId)}/exec`,this.door.json({command:e,...n?.cwd?{cwd:n.cwd}:{},...n?.envs?{envs:n.envs}:{},...n?.timeoutMs!==void 0?{timeoutMs:n.timeoutMs}:{}})),s="",o="",c,u=l=>{if(!l.trim())return;let i;try{i=JSON.parse(l);}catch{throw new Error(`Managed Modal exec stream carried a garbled record: ${l}`)}i.stream==="stdout"&&typeof i.data=="string"?(s+=i.data,n?.onStdout?.(i.data)):i.stream==="stderr"&&typeof i.data=="string"?(o+=i.data,n?.onStderr?.(i.data)):c=i;};if(r.body){let l=r.body.getReader(),i=new TextDecoder,a="";for(;;){let{done:d,value:p}=await l.read();if(d)break;a+=i.decode(p,{stream:true});let g;for(;(g=a.indexOf(`
2
+ `))!==-1;)u(a.slice(0,g)),a=a.slice(g+1);}a+=i.decode(),u(a);}else for(let l of (await r.text()).split(`
3
+ `))u(l);if(c?.error!==void 0)throw new Error(`Managed Modal exec failed: ${c.error}`);if(typeof c?.exitCode!="number")throw new Error("Managed Modal exec stream ended without a terminal record \u2014 the connection died mid-run.");return {exitCode:c.exitCode,stdout:s,stderr:o}}async spawn(e,n){let r=this.run(e,n);return r.catch(()=>{}),{processId:`managed-modal-${Date.now()}-${Math.random().toString(36).slice(2)}`,wait:()=>r,kill:async()=>false}}async list(){return (await this.run("ps -eo pid,comm,args")).stdout.trim().split(`
4
+ `).slice(1).filter(r=>r.trim()).map(r=>{let s=r.trim().split(/\s+/);return {processId:s[0],cmd:s[1]||"",args:s.slice(2),envs:{}}})}async kill(e){return /^\d+$/.test(e)?(await this.run(`kill -9 ${e}`)).exitCode===0:false}},js=class{constructor(e,n){this.door=e;this.sandboxId=n;}filesPath(e){return `/sandboxes/${encodeURIComponent(this.sandboxId)}/files/${e}`}encodeContent(e){return typeof e=="string"?{content:e}:{content:Buffer.from(_p(e)).toString("base64"),encoding:"base64"}}boundedJson(e,n){let r=this.door.json(n),s=Buffer.byteLength(r.body,"utf8");if(s>aa)throw new rr(e,s);return r}async read(e){let r=await(await this.door.request("file read",this.filesPath("read"),this.door.json({path:e}))).json();return r.encoding==="base64"?new Uint8Array(Buffer.from(r.content??"","base64")):r.content??""}async write(e,n){await this.door.request("file write",this.filesPath("write"),this.boundedJson("file write",{path:e,...this.encodeContent(n)}));}async writeBatch(e){e.length!==0&&await this.door.request("file writeBatch",this.filesPath("writeBatch"),this.boundedJson("file writeBatch",{files:e.map(n=>({path:n.path,...this.encodeContent(n.data)}))}));}async makeDir(e){await this.door.request("makeDir",this.filesPath("makeDir"),this.door.json({path:e}));}};Pt=class{constructor(e,n){this.door=e;this.sandboxId=n;this.commands=new Bs(e,n),this.files=new js(e,n);}commands;files;async getHost(e){throw new Error("Managed Modal sandboxes expose no tunnels, so getHost() is unavailable through the managed door.")}async kill(){try{await this.door.request("kill",`/sandboxes/${encodeURIComponent(this.sandboxId)}`,{method:"DELETE"});}catch(e){if(e instanceof et&&e.status===404)return;throw e}}async pause(){throw new Error("Modal does not support pause/resume. Persist progress with Evolve checkpoints and resume in a fresh sandbox, or use kill() to terminate.")}async isRunning(){try{return await this.getInfo(),!0}catch(e){if(e instanceof et&&e.status===404)return false;throw e}}async getInfo(){let e=await this.door.request("get",`/sandboxes/${encodeURIComponent(this.sandboxId)}`,{method:"GET"});return la(await e.json())}},Js=class{providerType="modal";name="Managed Modal";door;retryCreateRequest;constructor(e){this.door=new sr(e),this.retryCreateRequest=e.retryCreateRequest;}async create(e){if(e.resources!==void 0)throw new Error("Managed Modal sandboxes are platform-sized; `resources` cannot be enforced through the managed door.");if(e.network!==void 0)throw new Error("Managed Modal sandboxes run the platform's network policy; `network` cannot be enforced through the managed door.");if(e.user!==void 0)throw new Error("Managed Modal sandboxes run as the platform's sandbox user; `user` cannot be enforced through the managed door.");if(e.idleTimeoutMs!==void 0)throw new Error("The managed Modal door takes no idle timeout; bound the sandbox with `timeoutMs` instead.");if(e.bootCommand!==void 0)throw new Error("Managed Modal sandboxes boot the platform image as configured; `bootCommand` cannot be enforced through the managed door.");let n=this.door.json({...e.image?{image:e.image}:{},...e.timeoutMs!==void 0?{timeoutMs:e.timeoutMs}:{},...e.workingDirectory?{workingDirectory:e.workingDirectory}:{},...e.envs?{envs:e.envs}:{},...e.metadata?{metadata:e.metadata}:{}}),r=()=>this.door.request("create","/sandboxes",n),o=await(await(this.retryCreateRequest?this.retryCreateRequest(r):r())).json();return new Pt(this.door,o.sandboxId)}async connect(e,n){let r=new Pt(this.door,e);return await r.getInfo(),r}async list(e){if(e?.state&&!e.state.includes("running"))return [];let s=((await(await this.door.request("list","/sandboxes",{method:"GET"})).json()).sandboxes??[]).map(la);if(e?.metadata){let o=Object.entries(e.metadata);s=s.filter(c=>o.every(([u,l])=>c.metadata[u]===l));}return e?.limit!==void 0&&(s=s.slice(0,e.limit)),s}async listAll(e){if(e?.state&&!e.state.includes("running"))return {sandboxes:[],complete:true,pagesFetched:0};let n;try{n=await this.list({...e,limit:void 0});}catch(o){return {sandboxes:[],complete:false,pagesFetched:0,error:`sandbox list failed: ${o instanceof Error?o.message:String(o)}`}}let r=e?.limit!==void 0?n.slice(0,e.limit):n,s=r.length<n.length;return {sandboxes:r,complete:!s,pagesFetched:1,...s?{error:`stopped at the requested limit of ${e?.limit} with more sandboxes available`}:{}}}},wp=(t,e)=>new Pt(new sr(t),e);});var Ol={};rn(Ol,{RESUMABLE_UPLOAD_CHUNK_BYTES:()=>Tl,RESUMABLE_UPLOAD_MAX_ATTEMPTS:()=>Bt,RESUMABLE_UPLOAD_MAX_RATE_LIMIT_WAITS:()=>Pl,RESUMABLE_UPLOAD_MAX_RETRY_AFTER_SEC:()=>Al,RESUMABLE_UPLOAD_THRESHOLD_BYTES:()=>jt,retryAfterWaitMs:()=>Il,setResumableUploadThresholdBytes:()=>Ng,uploadArchiveResumable:()=>Vg});function Ng(t){jt=t;}async function jg(t){let e=await promises.open(t,"r");try{let n=crypto.createHash("sha256"),r=Buffer.alloc(1024*1024);for(;;){let{bytesRead:s}=await e.read(r,0,r.length);if(s===0)break;n.update(r.subarray(0,s));}return n.digest("hex")}finally{await e.close();}}function gi(t){return Math.min(500*2**(t-1),4e3)}function Il(t,e){let n=t===void 0?0:t*1e3;return Math.min(Math.max(n,gi(e)),Al*1e3)}async function pi(t,e,n){let r=new AbortController,s=setTimeout(()=>r.abort(),n);s.unref?.();try{return await fetch(t,{...e,signal:r.signal})}finally{clearTimeout(s);}}async function pr(t){for(let e=0;;e+=1){let n=await t();if(!Jg(n)||e>=Pl)return n;let r=await n.text().catch(()=>"");await mi(Il($e(r,n),e+1));}}function Kg(t,e,n){return new Promise((r,s)=>{let o=new URL(t),u=(o.protocol==="https:"?https.request:http.request)(o,{method:"POST",headers:e}),l=setTimeout(()=>{u.destroy(new Error(`finalize timed out: no response for ${Math.round(n/1e3)}s`));},n);l.unref?.(),u.on("error",i=>{clearTimeout(l),s(i);}),u.on("response",i=>{let a=[];i.on("data",d=>a.push(d)),i.on("error",d=>{clearTimeout(l),s(d);}),i.on("end",()=>{clearTimeout(l);let d=new Headers;for(let[m,f]of Object.entries(i.headers))if(typeof f=="string")d.set(m,f);else if(Array.isArray(f))for(let h of f)d.append(m,h);let p=i.statusCode??0,g=p!==204&&p!==205&&p!==304;r(new Response(g?Buffer.concat(a):null,{status:p,statusText:i.statusMessage??"",headers:d}));});}),u.end();})}async function Vg(t){let e=t.timeoutMs??Bg,n=t.chunkBytes??Tl,{size:r}=await promises.stat(t.file.path),s=await jg(t.file.path),o=`${t.baseUrl}${t.sessionsPath??"/api/datasets/publish/uploads"}`,c={...t.headers,"Content-Type":"application/json"},u={size:r,sha256:s};for(let[g,m]of Object.entries(t.fields))m!==void 0&&(u[g]=m);let l=await pr(()=>pi(o,{method:"POST",headers:c,body:JSON.stringify(u)},e));if(!l.ok)return l;let i=await l.json(),a=`${o}/${i.id}`;typeof i.import_id=="string"&&i.import_id!==""&&t.onRegistered?.(i.import_id);let d=async()=>{let g=await pr(()=>pi(a,{method:"HEAD",headers:t.headers},e));if(!g.ok)throw new Error(`upload session probe failed: HTTP ${g.status}`);let m=Number(g.headers.get("upload-offset"));if(!Number.isInteger(m))throw new Error("upload session probe did not return Upload-Offset");return m},p=await promises.open(t.file.path,"r");try{let g=0,m=0,f=Buffer.alloc(n);for(;g<r;){let b=Math.min(n,r-g),{bytesRead:_}=await p.read(f,0,b,g);if(_!==b)throw new Error(`archive shrank mid-upload: read ${_} of ${b} bytes at offset ${g}`);let w=f.subarray(0,b),y=crypto.createHash("sha256").update(w).digest(),k;try{k=await pr(()=>pi(a,{method:"PATCH",headers:{...t.headers,"Content-Type":"application/offset+octet-stream","Upload-Offset":String(g),"Upload-Checksum":`sha256 ${y.toString("base64")}`},body:new Uint8Array(w)},e));}catch(S){if(m+=1,m>=Bt)throw S;await mi(gi(m));try{g=await d();}catch{}continue}if(k.status===409){if(m+=1,m>=Bt)return k;g=await d();continue}if(!k.ok)return k;let R=Number(k.headers.get("upload-offset"));if(!Number.isInteger(R)||R<=g)throw new Error("resumable upload did not advance Upload-Offset");g=R,m=0,t.onBytes?.(g,r);}let h;for(let b=1;b<=Bt;b++)try{return await pr(()=>Kg(`${a}/complete`,t.headers,e))}catch(_){h=_,b<Bt&&await mi(gi(b));}throw h}finally{await p.close();}}var jt,Tl,Bt,Pl,Al,Bg,mi,Jg,fi=yt(()=>{Tt();jt=256*1024*1024;Tl=6*1024*1024,Bt=4,Pl=3,Al=60,Bg=6e5;mi=t=>new Promise(e=>setTimeout(e,t));Jg=t=>t.status===429||t.status===503;});var Zl={};rn(Zl,{EvolveUploadTimeoutError:()=>exports.EvolveUploadTimeoutError,UPLOAD_TIMEOUT_MS:()=>xi,postMultipartFile:()=>rm});function Yl(t,e){return new Promise((n,r)=>{t.write(e,s=>s?r(s):n());})}async function rm(t){let e=`----evolve${crypto.randomUUID().replace(/-/g,"")}`,n=[];for(let[w,y]of Object.entries(t.fields))y!==void 0&&n.push(`--${e}\r
5
+ Content-Disposition: form-data; name="${w}"\r
6
6
  \r
7
- ${w}\r
7
+ ${y}\r
8
8
  `);n.push(`--${e}\r
9
9
  Content-Disposition: form-data; name="archive"; filename="${t.file.filename}"\r
10
10
  Content-Type: application/gzip\r
11
11
  \r
12
12
  `);let r=Buffer.from(n.join(""),"utf8"),s=Buffer.from(`\r
13
13
  --${e}--\r
14
- `,"utf8"),{size:a}=await promises.stat(t.file.path),d=new URL(t.url),c=(d.protocol==="https:"?https.request:http.request)(d,{method:t.method,headers:{...t.headers,"Content-Type":`multipart/form-data; boundary=${e}`,"Content-Length":String(r.length+a+s.length)}}),i=t.timeoutMs??vs,o,l,p=new Promise((_,w)=>{l=w;});p.catch(()=>{});let g=_=>Promise.race([_,p]),m,h=()=>{m!==void 0&&clearTimeout(m),m=setTimeout(()=>{o=new exports.EvolveUploadTimeoutError(t.url,i),c.destroy(o),l(o);},i),m.unref();};c.on("error",_=>l(o??_)),h();let f,y=new Promise((_,w)=>{c.on("response",S=>{f=S,h(),_(S);}),c.on("error",S=>{f===void 0&&w(S);});});y.catch(()=>{});let b=ee.createReadStream(t.file.path);try{let _=(async()=>{await Ea(c,r),h();let E=0;for await(let A of b)await Ea(c,A),h(),E+=A.length,t.onBytes?.(E,a);await new Promise(A=>{c.end(s,A);});})();try{await g(_);}catch(E){if(b.destroy(),f===void 0)throw c.destroy(),o??E}let w=await g(y).catch(E=>{throw o??E}),S=(async()=>{let E=[];for await(let A of w)h(),E.push(A);return Buffer.concat(E)})(),v=await g(S).catch(E=>{throw o??E}),x=w.statusCode??0,R=new Headers;for(let[E,A]of Object.entries(w.headers))if(typeof A=="string")R.set(E,A);else if(Array.isArray(A))for(let $ of A)R.append(E,$);let I=x!==204&&x!==205&&x!==304;return new Response(I?v:null,{status:x,statusText:w.statusMessage??"",headers:R})}finally{m!==void 0&&clearTimeout(m);}}var vs;exports.EvolveUploadTimeoutError=void 0;var Ss=We(()=>{vs=6e5,exports.EvolveUploadTimeoutError=class extends Error{name="EvolveUploadTimeoutError";constructor(e,n){super(`upload to ${e} timed out: no socket activity for ${Math.round(n/1e3)}s`);}};});var xl={CLAUDE:"claude",CODEX:"codex",GEMINI:"gemini",QWEN:"qwen",KIMI:"kimi",OPENCODE:"opencode",DROID:"droid"},Jn=["no-internet","pinned-context"],Kn={strict:{coerceTypes:false,removeAdditional:false,useDefaults:false,allErrors:true},loose:{coerceTypes:"array",removeAdditional:false,useDefaults:true,allErrors:true}},Cl=["timeoutMs","background","from","checkpointComment","resume"];function Y(t=""){let e=process.env.EVOLVE_GATEWAY_URL||"https://swarmkit-gateway-692833842999.us-central1.run.app";if(!t)return e;let n=t.startsWith("/")?t:`/${t}`;return `${e}${n}`}function Se(t=""){let e=process.env.EVOLVE_DASHBOARD_URL||T;if(!t)return e;let n=t.startsWith("/")?t:`/${t}`;return `${e.replace(/\/$/,"")}${n}`}var xe=["e2b","daytona","modal"];function Ye(t){return Se(`/api/managed/${t}`)}function Ks(){return `${Ye("daytona")}/toolbox`}function Vn(){return Ye("e2b")}function Vs(t){return {"browser-use":{type:"http",url:Y("/browser_use/mcp"),headers:{"x-litellm-api-key":`Bearer ${t}`}}}}var O="EVOLVE_API_KEY",Lt="E2B_API_KEY",$t="DAYTONA_API_KEY",Ft="MODAL_TOKEN_ID",Gn="MODAL_TOKEN_SECRET",qn="claude",Xe=36e5,Gs=4,zn=100,X="/home/user";function qs(t,e){return e?e.replace(/\/+$/,"")||"/":t?t==="root"?"/root":`/home/${t}`:X}var T=process.env.EVOLVE_DASHBOARD_URL||"https://dashboard.evolvingmachines.ai",H="x-litellm-customer-id",re="x-litellm-tags",he="run:",zs=".evolve-sdk/observability/sessions",Qe=["tag","provider","agent","model","sandboxId","sandbox_id","timestamp","event","events"],Hs=100,Ws=5e3,Bt=3,Hn=1e3;var Xs=["off","minimal","low","medium","high","xhigh","max","thinking"],Ys=2e5,Qs=["off","minimal","medium","thinking"],Zs="medium";function Rl(t){return t==="none"?{efforts:[],defaultEffort:null}:{efforts:t==="binary"?Qs:Xs,defaultEffort:Zs}}function ei(t,e){return e??K[t]?.defaultReasoningEffort}function et(t){return t!=="off"&&t!=="none"&&t!=="minimal"&&t!=="no-thinking"}function Wn(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 El(t){let e=Wn(t);return e?` --variant ${e} --thinking`:""}var K={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:Ys}}},skillsConfig:{targetDir:"~/.claude/skills"},buildCommand:({prompt:t,model:e,isResume:n,reasoningEffort:r,nativeConfigPath:s})=>{let a=n?"--continue ":"",d=r?` --effort ${r}`:"",u=s?` --settings ${s}`:"";return `echo "${t}" | claude -p ${a}--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=${Ys}`}},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:s})=>{let a=r?` -c model_reasoning_effort="${r}"`:"";return `printf '%s' "${t}" | codex exec --model ${e}${a}${s??""} --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 ${Ze(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 s=n?"--continue ":"",a=r||e.startsWith("dashscope/")?e:`dashscope/${e}`;return `qwen "${t}" ${s}--auth-type openai --model ${a} --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=X})=>{let s=e?"--continue ":"",a=Ze(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)`,c=et(n)?"":" --no-thinking";return `if kimi --help 2>&1 | grep -q -- '--print'; then kimi --print ${s}${d}${u}${c} -p ${a} --output-format stream-json; else kimi ${s}-p ${a} --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:s,reasoningEffort:a})=>{let d=n?"--continue ":"",u=El(a);if(s)return `OPENCODE_PERMISSION='{"*":"allow"}' opencode run ${d}--model litellm/${e} --format json${u} "${t}" < /dev/null`;let c=Tl(e);return r?`OPENCODE_PERMISSION='{"*":"allow"}' opencode run ${d}--model ${c} --format json${u} "${t}" < /dev/null`:`OPENCODE_PERMISSION='{"*":"allow"}' opencode run ${d}--model litellm/${c} --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:s,isDirectMode:a,isExternalGateway:d,homeDir:u=X})=>{let c=!a||d,i=c?`--settings ${u}/.factory/evolve-settings.json `:"",o=c?"custom:Evolve-Gateway-0":e,l=s?` --reasoning-effort ${s}`:"",p=n&&r?`--session-id ${Ze(r)} `:"";return `printf '%s' ${Ze(t)} | droid ${i}exec ${p}--skip-permissions-unsafe --cwd ${u}/workspace --output-format stream-json --model ${Ze(o)}${l}`}}};function V(t){let e=K[t];if(!e)throw new Error(`Unknown agent type: ${t}`);return e}function Ce(t,e){if(t.models.some(s=>s.alias===e||s.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 ti(t,e){return t.models.find(n=>n.alias===e)?.modelId??e}function Tl(t){return t.startsWith("openrouter/")||Ce(K.opencode,t)?t:`openrouter/${t}`}function Yn(t){return t in K}function N(t,e=X){return t.replace(/^~/,e)}function Ze(t){return `'${t.replace(/'/g,"'\\''")}'`}function se(t,e=X){let n=V(t);return `${N(n.mcpConfig.settingsDir,e)}/${n.mcpConfig.filename}`}function ie(t,e=X){let n=V(t);return N(n.mcpConfig.settingsDir,e)}function oe(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 Xn(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 tt(t){for(let[e,n]of Object.entries(t))Xn(e,n);}function nt(t){return t.type?t.type:t.command?"stdio":"sse"}function Pl(t){let e=nt(t);return {...t,type:e}}function Al(t){let{type:e,url:n,...r}=t;return nt(t)==="http"&&n?{httpUrl:n,...r}:n?{url:n,...r}:r}function Il(t){return {type:nt(t),...t}}function Ol(t){let{type:e,...n}=t;return n.command?{...n,transport:"stdio"}:n.url&&(e==="http"||e==="sse")?{...n,transport:e}:n}function Ml(t){let e=nt(t),{type:n,httpHeaders:r,envHttpHeaders:s,bearerTokenEnvVar:a,envVars:d,...u}=t;if(e==="stdio"&&t.command)return {type:"stdio",...u};if(t.url){let c={...u,type:e==="sse"?"sse":"http",url:t.url},i=t.headers??r;return i&&Object.keys(i).length>0&&(c.headers=i),c}return {type:e==="stdio"?"stdio":"http",...u}}async function Qn(t,e,n,r,s){tt(n);let a=ie(e,s),d=se(e,s);await t.files.makeDir(a);let u={};try{let i=await t.files.read(d);typeof i=="string"&&(u=JSON.parse(i));}catch(i){if(!oe(i))throw i}let c=Object.fromEntries(Object.entries(n).map(([i,o])=>[i,r(o)]));await t.files.write(d,JSON.stringify({...u,mcpServers:c},null,2));}async function Nt(t,e,n,r){tt(n);let s=ie("claude",r),a=se("claude",r),d=Object.fromEntries(Object.entries(n).map(([c,i])=>[c,Il(i)]));await t.files.write(`${e}/.mcp.json`,JSON.stringify({mcpServers:d},null,2)),await t.files.makeDir(s);let u={};try{let c=await t.files.read(a);typeof c=="string"&&(u=JSON.parse(c));}catch(c){if(!oe(c))throw c}u.enableAllProjectMcpServers=true,await t.files.write(a,JSON.stringify(u,null,2));}async function jt(t,e,n){await Qn(t,"gemini",e,Pl,n);}async function Jt(t,e,n){await Qn(t,"qwen",e,Al,n);}async function Kt(t,e,n,r,s){let a=ie(e,s),d=se(e,s);await t.files.makeDir(a);let u={};try{let p=await t.files.read(d);typeof p=="string"&&(u=JSON.parse(p));}catch(p){if(!oe(p))throw p}let c=n.split("."),i=u;for(let p=0;p<c.length-1;p++){let g=c[p];(typeof i[g]!="object"||i[g]===null)&&(i[g]={}),i=i[g];}let o=c[c.length-1],l=typeof i[o]=="object"&&i[o]!==null?i[o]:{};i[o]={...l,...r},await t.files.write(d,JSON.stringify(u,null,2));}async function Zn(t,e,n){let r=ie("qwen",n),s=se("qwen",n);await t.files.makeDir(r);let a={};try{let i=await t.files.read(s);typeof i=="string"&&(a=JSON.parse(i));}catch(i){if(!oe(i))throw i}let d=a.model??{},u=d.generationConfig??{},c=u.extra_body??{};a.model={...d,generationConfig:{...u,extra_body:{...c,enable_thinking:e}}},await t.files.write(s,JSON.stringify(a,null,2));}async function er(t,e,n){await Qn(t,"kimi",e,Ol,n);}async function Vt(t,e,n){tt(n);let r=`${e}/.factory`,s=`${r}/mcp.json`;await t.files.makeDir(r);let a={};try{let u=await t.files.read(s);typeof u=="string"&&(a=JSON.parse(u));}catch(u){if(!oe(u))throw u}let d=Object.fromEntries(Object.entries(n).map(([u,c])=>[u,Ml(c)]));await t.files.write(s,JSON.stringify({...a,mcpServers:d},null,2));}async function Gt(t,e,n,r){let s=N(e.settingsPath,r),a=s.slice(0,s.lastIndexOf("/"));await t.files.makeDir(a);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(s,JSON.stringify(d,null,2));}async function tr(t,e,n){tt(n);let r=`${e}/opencode.json`,s={};try{let d=await t.files.read(r);typeof d=="string"&&(s=JSON.parse(d));}catch(d){if(!oe(d))throw d}let a=Object.fromEntries(Object.entries(n).map(([d,u])=>[d,Dl(u)]));await t.files.write(r,JSON.stringify({...s,mcp:a},null,2));}function Dl(t){let e=nt(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 nr(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)?t:void 0}function ni(t,e,n){let r=t[e];if(r===void 0)return {};let s=nr(r);if(!s){let a=Array.isArray(r)?"an array":`a ${typeof r}`;throw new Error(`Refusing to rewrite "${e}" in ${n}: expected a TOML table, found ${a}`)}return s}function rr(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((a,d)=>rr(a,e[d]));let n=nr(t),r=nr(e);if(!n||!r)return false;let s=Object.keys(n);return s.length===Object.keys(r).length&&s.every(a=>a in r&&rr(n[a],r[a]))}async function ri(t,e){let n="";try{let r=await t.files.read(e);typeof r=="string"&&(n=r);}catch(r){if(!oe(r))throw r;return {}}if(!n.trim())return {};try{return smolToml.parse(n)}catch(r){throw new Error(`Failed to parse TOML at ${e}: ${r.message}`)}}async function sr(t,e,n){await t.files.write(e,smolToml.stringify(n).trimEnd()+`
15
- `);}function $l(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 a=e.httpHeaders??e.headers;a&&Object.keys(a).length>0&&(n.http_headers=a),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 qt(t,e,n){for(let[u,c]of Object.entries(e))Xn(u,c);let r=ie("codex",n),s=se("codex",n);await t.files.makeDir(r);let a=await ri(t,s);a.experimental_use_rmcp_client===void 0&&(a.experimental_use_rmcp_client=true);let d=ni(a,"mcp_servers",s);a.mcp_servers=d;for(let[u,c]of Object.entries(e))d[u]===void 0&&(d[u]=$l(u,c));await sr(t,s,a);}async function zt(t,e,n,r={},s){let a=ie("codex",s),d=se("codex",s);await t.files.makeDir(a);let u=await ri(t,d),c={...n?{[H]:n.sessionTagEnv,[re]:n.runTagEnv}:{},...r},i={name:"Evolve Gateway",base_url:e,env_key:"OPENAI_API_KEY",wire_api:"responses",...Object.keys(c).length>0?{env_http_headers:c}:{}},o=ni(u,"model_providers",d);u.model_provider==="evolve-gateway"&&rr(o["evolve-gateway"],i)||(u.model_provider="evolve-gateway",o["evolve-gateway"]=i,u.model_providers=o,await sr(t,d,u));}async function ir(t,e,n,r,s){let a=N(e.configPath,s),d=a.slice(0,a.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 sr(t,a,u);}async function or(t,e,n,r,s){if(!(!r||Object.keys(r).length===0))switch(t){case "claude":await Nt(e,n,r,s);break;case "codex":await qt(e,r,s);break;case "gemini":await jt(e,r,s);break;case "qwen":await Jt(e,r,s);break;case "kimi":await er(e,r,s);break;case "opencode":await tr(e,n,r);break;case "droid":await Vt(e,n,r);break;default:throw new Error(`Unknown agent type for MCP config: ${t}`)}}function si(t){return !!t&&t.sessionUpdate!=="error"&&t.sessionUpdate!=="usage"}function D(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 Ht(t){return typeof t=="number"&&Number.isFinite(t)?t:void 0}function rt(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t,n=Ht(e.input_tokens),r=Ht(e.output_tokens),s=Ht(e.cache_read_input_tokens),a=Ht(e.cache_creation_input_tokens),d={};(n!==void 0||s!==void 0||a!==void 0)&&(d.promptTokens=(n??0)+(s??0)+(a??0)),r!==void 0&&(d.completionTokens=r),s!==void 0&&(d.cachedTokens=s);let u={};for(let[c,i]of Object.entries(e))c==="input_tokens"||c==="output_tokens"||i!=null&&(u[c]=i);return Object.keys(u).length>0&&(d.extra=u),d}function ge(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 Wt(){let t={};return function(i){let o;try{o=JSON.parse(i);}catch{return null}if(o._meta||o._prompt)return null;let l=o.session_id;switch(o.type){case "system":return null;case "assistant":{let p=n(o.message?.content,"assistant")??[],g=rt(o.message?.usage);return g&&p.push({sessionUpdate:"usage",scope:"call",usage:g}),e(p,o,l)}case "user":{let p=o.message?.content;if(typeof p=="string"||Array.isArray(p)&&p.length===1&&p[0].type==="text")return null;let g=o.tool_use_result??o.toolUseResult;return e(n(p,"user",g),o,l)}case "result":{let p=[],g=typeof o.total_cost_usd=="number"&&Number.isFinite(o.total_cost_usd)?o.total_cost_usd:void 0,m=rt(o.usage)??(g!==void 0?{}:null);if(m&&(g!==void 0&&(m.costUsd=g),p.push({sessionUpdate:"usage",scope:"run",usage:m})),o.is_error===true){let f=(Array.isArray(o.errors)?o.errors:[]).filter(y=>typeof y=="string"&&y.length>0).join(`
16
- `);p.push({sessionUpdate:"error",message:D([f,o.result,o.subtype],o),fatal:true});}return e(p,o,l)}default:return null}};function e(c,i,o){if(!c||c.length===0)return null;let l=i.message,p=ge(i.timestamp),g=typeof l?.model=="string"&&l.model?l.model:void 0,m=typeof l?.id=="string"&&l.id?l.id:void 0,h=typeof i.parent_tool_use_id=="string"&&i.parent_tool_use_id?i.parent_tool_use_id:void 0,f={};for(let y of ["stop_reason","stop_sequence","requestId"]){let b=l?.[y];b!=null&&(f[y]=b);}return c.map(y=>({sessionId:o,update:y,...p!==void 0?{timestamp:p}:{},...g!==void 0?{model:g}:{},...m!==void 0?{messageId:m}:{},...h!==void 0?{parentToolCallId:h}:{},...Object.keys(f).length>0?{extra:f}:{}}))}function n(c,i,o){if(typeof c=="string")return i==="user"?null:[{sessionUpdate:"agent_message_chunk",content:{type:"text",text:c}}];if(!c||!Array.isArray(c))return null;let l=[];for(let p of c){let g=null;switch(p.type){case "text":case "text_delta":if(i==="user")break;g={sessionUpdate:"agent_message_chunk",content:{type:"text",text:p.text}};break;case "image":if(i==="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 m=r(p);g={sessionUpdate:"tool_call",toolCallId:p.id,status:"pending",...m,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 m=t[p.tool_use_id];if(!m||(delete t[p.tool_use_id],m.name==="TodoWrite"))break;g={sessionUpdate:"tool_call_update",toolCallId:p.tool_use_id,status:"is_error"in p&&p.is_error?"failed":"completed",...s(p,m),...o!=null?{rawOutput:o}:{}};break}}g&&l.push(g);}return l.length>0?l:null}function r(c){let i=c.name,o=c.input||{};switch(i){case "Task":return {title:o.description||"Task",kind:"think",content:o.prompt?[{type:"content",content:{type:"text",text:o.prompt}}]:[],rawInput:o};case "NotebookRead":return {title:o.notebook_path?`Read Notebook ${o.notebook_path}`:"Read Notebook",kind:"read",content:[],locations:o.notebook_path?[{path:o.notebook_path}]:[],rawInput:o};case "NotebookEdit":return {title:o.notebook_path?`Edit Notebook ${o.notebook_path}`:"Edit Notebook",kind:"edit",content:o.new_source?[{type:"content",content:{type:"text",text:o.new_source}}]:[],locations:o.notebook_path?[{path:o.notebook_path}]:[],rawInput:o};case "Bash":return {title:o.command?"`"+o.command.replaceAll("`","\\`")+"`":"Terminal",kind:"execute",content:o.description?[{type:"content",content:{type:"text",text:o.description}}]:[],rawInput:o};case "BashOutput":return {title:"Tail Logs",kind:"execute",content:[],rawInput:o};case "KillShell":return {title:"Kill Process",kind:"execute",content:[],rawInput:o};case "Read":{let l="";return o.limit?l=" ("+((o.offset??0)+1)+" - "+((o.offset??0)+o.limit)+")":o.offset&&(l=" (from line "+(o.offset+1)+")"),{title:"Read "+(o.file_path??"File")+l,kind:"read",content:[],locations:o.file_path?[{path:o.file_path,line:o.offset??0}]:[],rawInput:o}}case "LS":return {title:o.path?`List \`${o.path}\` directory`:"List current directory",kind:"search",content:[],locations:[],rawInput:o};case "Edit":{let l=o.file_path;return {title:l?`Edit \`${l}\``:"Edit",kind:"edit",content:l?[{type:"diff",path:l,oldText:o.old_string??null,newText:o.new_string??""}]:[],locations:l?[{path:l}]:[],rawInput:o}}case "Write":return {title:o.file_path?`Write ${o.file_path}`:"Write",kind:"edit",content:o.file_path?[{type:"diff",path:o.file_path,oldText:null,newText:o.content??""}]:[],locations:o.file_path?[{path:o.file_path}]:[],rawInput:o};case "Glob":{let l="Find";return o.path&&(l+=` \`${o.path}\``),o.pattern&&(l+=` \`${o.pattern}\``),{title:l,kind:"search",content:[],locations:o.path?[{path:o.path}]:[],rawInput:o}}case "Grep":{let l="grep";return o["-i"]&&(l+=" -i"),o["-n"]&&(l+=" -n"),o["-A"]!==void 0&&(l+=` -A ${o["-A"]}`),o["-B"]!==void 0&&(l+=` -B ${o["-B"]}`),o["-C"]!==void 0&&(l+=` -C ${o["-C"]}`),o.output_mode==="files_with_matches"?l+=" -l":o.output_mode==="count"&&(l+=" -c"),o.head_limit!==void 0&&(l+=` | head -${o.head_limit}`),o.glob&&(l+=` --include="${o.glob}"`),o.type&&(l+=` --type=${o.type}`),o.multiline&&(l+=" -P"),l+=` "${o.pattern??""}"`,o.path&&(l+=` ${o.path}`),{title:l,kind:"search",content:[],rawInput:o}}case "WebFetch":return {title:o.url?`Fetch ${o.url}`:"Fetch",kind:"fetch",content:o.prompt?[{type:"content",content:{type:"text",text:o.prompt}}]:[],rawInput:o};case "WebSearch":{let l=`"${o.query??""}"`;return o.allowed_domains?.length>0&&(l+=` (allowed: ${o.allowed_domains.join(", ")})`),o.blocked_domains?.length>0&&(l+=` (blocked: ${o.blocked_domains.join(", ")})`),{title:l,kind:"fetch",content:[],rawInput:o}}case "TodoWrite":return {title:Array.isArray(o.todos)?`Update TODOs: ${o.todos.map(l=>l.content).join(", ")}`:"Update TODOs",kind:"think",content:[],rawInput:o};case "ExitPlanMode":return {title:"Ready to code?",kind:"switch_mode",content:o.plan?[{type:"content",content:{type:"text",text:o.plan}}]:[],rawInput:o};default:if(i?.startsWith("mcp__")){let l=i.split("__"),p=l[1]||"mcp",g=l.slice(2).join("__")||i;return {title:`${p}: ${g}`,kind:"other",content:[],rawInput:o}}return {title:i||"Unknown Tool",kind:"other",content:[],rawInput:o}}}function s(c,i){return i?.name==="ExitPlanMode"?{title:"Exited Plan Mode"}:a(c.content)}function a(c){return Array.isArray(c)&&c.length>0?{content:c.map(i=>({type:"content",content:d(i)}))}:typeof c=="string"&&c.length>0?{content:[{type:"content",content:{type:"text",text:c}}]}:{}}function d(c){if(c.type==="text")return {type:"text",text:c.text};if(c.type==="image"){if(c.data&&c.mimeType)return {type:"image",data:c.data,mimeType:c.mimeType};if(c.source?.type==="base64")return {type:"image",data:c.source.data||"",mimeType:c.source.media_type||""};if(c.source?.type==="url")return {type:"image",data:"",mimeType:"",uri:c.source.url}}return c}function u(c){return c.todos.map(i=>({content:i.content,status:i.status||"pending",priority:"medium"}))}}function Yt(){let e;return function(o){let l;try{l=JSON.parse(o);}catch{return null}if(l._meta||l._prompt)return null;let p=[];switch(l.type){case "thread.started":return typeof l.thread_id=="string"&&l.thread_id&&(e=l.thread_id),null;case "turn.started":return null;case "turn.completed":{let g=n(l.usage);if(!g)return null;p.push({update:{sessionUpdate:"usage",scope:"run",usage:g}});break}case "error":{let g=D([l.message],l);p.push({update:{sessionUpdate:"error",message:g,fatal:false}});break}case "turn.failed":{let g=D([l.error?.message],l.error??l);p.push({update:{sessionUpdate:"error",message:g,fatal:true}});break}case "item.started":{let g=l.item;if(!g)return null;let m=r(g);m&&p.push({update:m});break}case "item.updated":{let g=l.item;if(!g)return null;let m=s(g);m&&p.push({update:m});break}case "item.completed":{let g=l.item;if(!g)return null;let m=a(g);m&&p.push({update:m});break}default:return null}return p.length===0?null:e===void 0?p:p.map(g=>({sessionId:e,...g}))};function n(i){if(!i||typeof i!="object"||Array.isArray(i))return null;let o=i,l=y=>typeof y=="number"&&Number.isFinite(y)?y:void 0,p={},g=l(o.input_tokens),m=l(o.output_tokens),h=l(o.cached_input_tokens);g!==void 0&&(p.promptTokens=g),m!==void 0&&(p.completionTokens=m),h!==void 0&&(p.cachedTokens=h);let f={};for(let[y,b]of Object.entries(o))y==="input_tokens"||y==="output_tokens"||y==="cached_input_tokens"||b!=null&&(f[y]=b);return Object.keys(f).length>0&&(p.extra=f),p}function r(i){let o=i.id;switch(i.type){case "mcp_tool_call":return {type:"mcp_tool_call",name:`${i.server}:${i.tool}`},{sessionUpdate:"tool_call",toolCallId:o,title:`${i.server}: ${i.tool}`,toolName:`mcp__${i.server}__${i.tool}`,kind:"other",status:"in_progress",rawInput:i.arguments,content:[]};case "command_execution":return {type:"command_execution",name:i.command},{sessionUpdate:"tool_call",toolCallId:o,title:i.command?`\`${i.command}\``:"Execute Command",toolName:"command_execution",kind:"execute",status:"in_progress",rawInput:{command:i.command},content:[]};case "web_search":return {type:"web_search",name:i.query},{sessionUpdate:"tool_call",toolCallId:o,title:`Search: ${i.query??""}`,toolName:"web_search",kind:"fetch",status:"in_progress",content:[]};case "todo_list":return {sessionUpdate:"plan",entries:c(i.items)};default:return null}}function s(i){return i.type==="todo_list"?{sessionUpdate:"plan",entries:c(i.items)}:null}function a(i){let o=i.id;switch(i.type){case "error":return {sessionUpdate:"error",message:D([i.message],i),fatal:false};case "reasoning":return {sessionUpdate:"agent_thought_chunk",content:{type:"text",text:i.text??i.summary?.join(`
14
+ `,"utf8"),{size:o}=await promises.stat(t.file.path),c=new URL(t.url),l=(c.protocol==="https:"?https.request:http.request)(c,{method:t.method,headers:{...t.headers,"Content-Type":`multipart/form-data; boundary=${e}`,"Content-Length":String(r.length+o+s.length)}}),i=t.timeoutMs??xi,a,d,p=new Promise((w,y)=>{d=y;});p.catch(()=>{});let g=w=>Promise.race([w,p]),m,f=()=>{m!==void 0&&clearTimeout(m),m=setTimeout(()=>{a=new exports.EvolveUploadTimeoutError(t.url,i),l.destroy(a),d(a);},i),m.unref();};l.on("error",w=>d(a??w)),f();let h,b=new Promise((w,y)=>{l.on("response",k=>{h=k,f(),w(k);}),l.on("error",k=>{h===void 0&&y(k);});});b.catch(()=>{});let _=he.createReadStream(t.file.path);try{let w=(async()=>{await Yl(l,r),f();let C=0;for await(let P of _)await Yl(l,P),f(),C+=P.length,t.onBytes?.(C,o);await new Promise(P=>{l.end(s,P);});})();try{await g(w);}catch(C){if(_.destroy(),h===void 0)throw l.destroy(),a??C}let y=await g(b).catch(C=>{throw a??C}),k=(async()=>{let C=[];for await(let P of y)f(),C.push(P);return Buffer.concat(C)})(),R=await g(k).catch(C=>{throw a??C}),S=y.statusCode??0,v=new Headers;for(let[C,P]of Object.entries(y.headers))if(typeof P=="string")v.set(C,P);else if(Array.isArray(P))for(let N of P)v.append(C,N);let E=S!==204&&S!==205&&S!==304;return new Response(E?R:null,{status:S,statusText:y.statusMessage??"",headers:v})}finally{m!==void 0&&clearTimeout(m);}}var xi;exports.EvolveUploadTimeoutError=void 0;var Ri=yt(()=>{xi=6e5,exports.EvolveUploadTimeoutError=class extends Error{name="EvolveUploadTimeoutError";constructor(e,n){super(`upload to ${e} timed out: no socket activity for ${Math.round(n/1e3)}s`);}};});function J(t){return `'${t.replace(/'/g,"'\\''")}'`}var Wc={CLAUDE:"claude",CODEX:"codex",GEMINI:"gemini",QWEN:"qwen",KIMI:"kimi",OPENCODE:"opencode",DROID:"droid",PI:"pi",PRIME_AGENT:"prime-agent",DSH:"dsh",ZCODE:"zcode",ANTIGRAVITY:"antigravity"},Mr=["no-internet","pinned-context"],Dr={strict:{coerceTypes:false,removeAdditional:false,useDefaults:false,allErrors:true},loose:{coerceTypes:"array",removeAdditional:false,useDefaults:true,allErrors:true}},Yc=["timeoutMs","background","from","checkpointComment","resume"];function W(t=""){let e=process.env.EVOLVE_GATEWAY_URL||"https://swarmkit-gateway-692833842999.us-central1.run.app";if(!t)return e;let n=t.startsWith("/")?t:`/${t}`;return `${e}${n}`}function Je(t=""){let e=process.env.EVOLVE_DASHBOARD_URL||M;if(!t)return e;let n=t.startsWith("/")?t:`/${t}`;return `${e.replace(/\/$/,"")}${n}`}var Ke=["e2b","daytona","modal"];function bt(t){return Je(`/api/managed/${t}`)}function Gi(){return `${bt("daytona")}/toolbox`}function Ur(){return bt("e2b")}function zi(t){return {"browser-use":{type:"http",url:W("/browser_use/mcp"),headers:{"x-litellm-api-key":`Bearer ${t}`}}}}var B="EVOLVE_API_KEY",sn="E2B_API_KEY",on="DAYTONA_API_KEY",an="MODAL_TOKEN_ID",$r="MODAL_TOKEN_SECRET",Lr="claude",_t=36e5,Hi=4,Fr=100,G="/home/user";function qi(t,e){return e?e.replace(/\/+$/,"")||"/":t?t==="root"?"/root":`/home/${t}`:G}var M=process.env.EVOLVE_DASHBOARD_URL||"https://dashboard.evolvingmachines.ai",Y="x-litellm-customer-id",ie="x-litellm-tags",_e="run:",Wi=".evolve-sdk/observability/sessions",wt=["tag","provider","agent","model","sandboxId","sandbox_id","timestamp","event","events"],Yi=100,Zi=5e3,ln=3,Nr=1e3;var Xi=["off","minimal","low","medium","high","xhigh","max","thinking"],Br=2e5,Qi=["off","minimal","medium","thinking"],eo="medium";function Zc(t,e){return t==="none"?{efforts:[],defaultEffort:null}:{efforts:e??(t==="binary"?Qi:Xi),defaultEffort:eo}}function to(t,e){return e??z[t]?.defaultReasoningEffort}function Oe(t){return t!=="off"&&t!=="none"&&t!=="minimal"&&t!=="no-thinking"}function Jr(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 Xc(t){let e=Jr(t);return e?` --variant ${e} --thinking`:""}var kt=["low","medium","high"];function no(t){if(t){if(kt.includes(t))return t;throw new Error(`Evolve agent config: agent "dsh" honors reasoning effort ${kt.map(e=>`"${e}"`).join(", ")} only; "${t}" is not one of them and would be recorded but never applied.`)}}var cn="evolve",Qc="PI_MCP_ADAPTER_EXTENSION",ed="/opt/evolve/pi-mcp-adapter/node_modules/pi-mcp-adapter/index.ts";function dn(t){if(t)return t==="none"||t==="no-thinking"?"off":t==="thinking"?"medium":t}function un(t,e){return e.isDirectMode&&!e.isExternalGateway&&t.startsWith("openrouter/")?t.slice(11):t}var jr=[{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.5",modelId:"openrouter/anthropic/claude-opus-5.5",description:"Anthropic Opus 5.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-6-sol",modelId:"openrouter/openai/gpt-6-sol",description:"OpenAI GPT-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-6-luna",modelId:"openrouter/openai/gpt-6-luna",description:"OpenAI GPT-6 Luna via OpenRouter"},{alias:"openrouter/google/gemini-3.8-flash",modelId:"openrouter/google/gemini-3.8-flash",description:"Gemini 3.8 Flash via OpenRouter"},{alias:"openrouter/qwen/qwen3.8-max-0902",modelId:"openrouter/qwen/qwen3.8-max-0902",description:"Qwen 3.8 Max (0902) 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"}];function ro(t){let e=t??z.zcode.defaultReasoningEffort;return Oe(e)?e==="low"?"low":e==="medium"||e==="thinking"?"medium":"high":"disabled"}function td(t){return {ZCODE_STORAGE_DIR:`${t}/.zcode`,ZCODE_DATA_BASE_DIR:t,ZCODE_SESSION_DB_PATH:`${t}/.zcode/cli/db/db.sqlite`,ZCODE_SESSION_DB:`${t}/.zcode/cli/db/db.sqlite`,ZCODE_PERSONAL_PROVIDER_CONFIG_FILE:`${t}/.zcode/v2/provider_config.json`,ZCODE_HTTP_PROXY:"",ZCODE_NO_PROXY:"",ZCODE_AGENT_CA_CERT:"",ZCODE_MODEL_TELEMETRY_ENABLED:"0"}}function nd(t){switch(t){case "off":case "none":case "no-thinking":case "minimal":case "low":return "low";case "medium":case "thinking":return "medium";case "high":return "high";case "xhigh":case "max":return "max";default:return t}}function Kr(t,e){return e.isExternalGateway?Ge(z.antigravity,t):t}var z={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-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:"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:Br}}},skillsConfig:{targetDir:"~/.claude/skills"},buildCommand:({prompt:t,model:e,isResume:n,reasoningEffort:r,nativeConfigPath:s})=>{let o=n?"--continue ":"",c=r?` --effort ${r}`:"",u=s?` --settings ${s}`:"",l=Ge(z.claude,e);return `echo "${t}" | claude -p ${o}--model ${l}${c}${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-6-sol",defaultReasoningEffort:"high",models:[{alias:"gpt-6-astra",modelId:"gpt-6-astra",description:"Most capable, for the hardest end-to-end work"},{alias:"gpt-6-sol",modelId:"gpt-6-sol",description:"Complex coding and agentic workflows"},{alias:"gpt-5.6-terra",modelId:"gpt-5.6-terra",description:"Balances intelligence and cost"},{alias:"gpt-6-luna",modelId:"gpt-6-luna",description:"Most efficient, for focused high-volume tasks"},{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=${Br}`}},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:s})=>{let o=r?` -c model_reasoning_effort="${r}"`:"";return `printf '%s' "${t}" | codex exec --model ${e}${o}${s??""} --dangerously-bypass-approvals-and-sandbox --skip-git-repo-check --json${n?" resume --last":""}`}},gemini:{retired:{replacedBy:"antigravity"},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 ${J(t)} --model ${e} --yolo --output-format stream-json`},qwen:{image:"evolve-all",apiKeyEnv:"OPENAI_API_KEY",baseUrlEnv:"OPENAI_BASE_URL",effortSupport:"binary",defaultModel:"qwen3.8-max",defaultReasoningEffort:"thinking",models:[{alias:"qwen3.8-max",modelId:"qwen3.8-max",description:"Strongest reasoning and coding option"},{alias:"qwen3.7-plus",modelId:"qwen3.7-plus",description:"Latest balanced Qwen Cloud recommendation"},{alias:"qwen3.8-flash",modelId:"qwen3.8-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.8-max":"dashscope/qwen3.8-max","qwen3.7-plus":"dashscope/qwen3.7-plus","qwen3.8-flash":"dashscope/qwen3.8-flash"},defaultBaseUrl:"https://dashscope-intl.aliyuncs.com/compatible-mode/v1",buildCommand:({prompt:t,model:e,isResume:n,isDirectMode:r})=>{let s=n?"--continue ":"",o=r||e.startsWith("dashscope/")?e:`dashscope/${e}`;return `qwen "${t}" ${s}--auth-type openai --model ${o} --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}],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"},buildCommand:({prompt:t,isResume:e,reasoningEffort:n,homeDir:r=G})=>{let s=e?"--continue ":"",o=J(t),c=`--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=Oe(n)?"":" --no-thinking";return `if kimi --help 2>&1 | grep -q -- '--print'; then kimi --print ${s}${c}${u}${l} -p ${o} --output-format stream-json; else kimi ${s}-p ${o} --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.5",defaultReasoningEffort:"high",providerEnvMap:{openrouter:{keyEnv:"OPENROUTER_API_KEY"}},gatewayConfigEnv:"OPENCODE_CONFIG_CONTENT",models:[...jr,{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:s,reasoningEffort:o})=>{let c=n?"--continue ":"",u=Xc(o);if(s)return `OPENCODE_PERMISSION='{"*":"allow"}' opencode run ${c}--model litellm/${e} --format json${u} "${t}" < /dev/null`;let l=rd(e);return r?`OPENCODE_PERMISSION='{"*":"allow"}' opencode run ${c}--model ${l} --format json${u} "${t}" < /dev/null`:`OPENCODE_PERMISSION='{"*":"allow"}' opencode run ${c}--model litellm/${l} --format json${u} "${t}" < /dev/null`}},droid:{image:"evolve-all",apiKeyEnv:"FACTORY_API_KEY",effortSupport:"level",defaultModel:"claude-opus-5-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-5",modelId:"claude-opus-5-5",description:"Factory-managed Claude Opus 5.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-5.6-terra",modelId:"gpt-5.6-terra",description:"Factory-managed GPT-5.6 Terra"},{alias:"gemini-3.8-flash",modelId:"gemini-3.8-flash",description:"Factory-managed Gemini 3.8 Flash"},{alias:"qwen3.8-max",modelId:"qwen3.8-max",description:"Qwen 3.8 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.8-max":"dashscope/qwen3.8-max"},droidGatewaySettings:{settingsPath:"~/.factory/evolve-settings.json",displayName:"Evolve Gateway",provider:"generic-chat-completion-api",maxOutputTokens:32768},checkpointDirs:["~/.factory"],sessionIdStateFile:"~/.factory/evolve-session.json",buildCommand:({prompt:t,model:e,isResume:n,sessionId:r,reasoningEffort:s,isDirectMode:o,isExternalGateway:c,homeDir:u=G})=>{let l=!o||c,i=l?`--settings ${u}/.factory/evolve-settings.json `:"",a=l?"custom:Evolve-Gateway-0":e,d=s?` --reasoning-effort ${s}`:"",p=n&&r?`--session-id ${J(r)} `:"";return `printf '%s' ${J(t)} | droid ${i}exec ${p}--skip-permissions-unsafe --cwd ${u}/workspace --output-format stream-json --model ${J(a)}${d}`}},pi:{image:"evolve-all",apiKeyEnv:"OPENROUTER_API_KEY",effortSupport:"level",defaultModel:"openrouter/anthropic/claude-opus-5.5",defaultReasoningEffort:"high",providerEnvMap:{openrouter:{keyEnv:"OPENROUTER_API_KEY"}},defaultBaseUrl:"https://openrouter.ai/api/v1",models:[...jr],systemPromptFile:"AGENTS.md",mcpConfig:{settingsDir:"~/.pi/agent",filename:"mcp.json",format:"json"},skillsConfig:{targetDir:"~/.pi/agent/skills"},modelsJsonRoute:{agentDir:"~/.pi/agent",providerName:cn,apiKeyRef:"dollar"},verdictFromStream:true,settingsStamp:{path:"~/.pi/agent/settings.json",document:{cacheWarming:"off",enableInstallTelemetry:false}},buildCommand:({prompt:t,model:e,isResume:n,reasoningEffort:r,isDirectMode:s,isExternalGateway:o,mcpConfigured:c,homeDir:u=G})=>{let l=`${u}/.pi/agent`,i=n?"--continue ":"",a=dn(r),d=a?` --thinking ${a}`:"",p=un(e,{isDirectMode:s,isExternalGateway:o}),g=c?` --extension "\${${Qc}:-${ed}}"`:"";return `PI_OFFLINE=1 PI_TELEMETRY=0 PI_SKIP_VERSION_CHECK=1 pi --mode json --approve ${i}--provider ${cn} --model ${p}${d} --session-dir ${l}/sessions${g} -- "${t}" </dev/null`}},"prime-agent":{image:"evolve-all",apiKeyEnv:"OPENROUTER_API_KEY",effortSupport:"level",defaultModel:"openrouter/anthropic/claude-opus-5.5",defaultReasoningEffort:"high",providerEnvMap:{openrouter:{keyEnv:"OPENROUTER_API_KEY"}},defaultBaseUrl:"https://openrouter.ai/api/v1",models:[...jr],systemPromptFile:"AGENTS.md",mcpConfig:{settingsDir:"~/.prime/agent",filename:"settings.json",format:"json"},skillsConfig:{targetDir:"~/.prime/agent/skills"},modelsJsonRoute:{agentDir:"~/.prime/agent",providerName:cn,apiKeyRef:"bare"},verdictFromStream:true,settingsStamp:{path:"~/.prime/agent/settings.json",document:{retry:{provider:{waitForUsage:{enabled:false,pauseUntilReset:false}}}}},checkpointExcludes:[".prime/agent/kernel-venv"],buildCommand:({prompt:t,model:e,isResume:n,reasoningEffort:r,isDirectMode:s,isExternalGateway:o})=>{let c=n?"--continue ":"",u=dn(r),l=u?` --thinking ${u}`:"",i=un(e,{isDirectMode:s,isExternalGateway:o});return `PRIME_AGENT_TELEMETRY=0 TMPDIR=/tmp prime-agent --mode json --offline --cwd "$PWD" ${c}--provider ${cn} --model ${i}${l} -- "${t}" </dev/null`}},dsh:{image:"evolve-all",apiKeyEnv:"OPENROUTER_API_KEY",effortSupport:"level",efforts:kt,baseUrlEnv:"EVOLVE_DSH_BASE_URL",defaultModel:"openrouter/deepseek/deepseek-v4.1-flash",defaultReasoningEffort:"high",providerEnvMap:{openrouter:{keyEnv:"OPENROUTER_API_KEY"}},models:[{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"},{alias:"openrouter/deepseek/deepseek-v4-pro-0813",modelId:"openrouter/deepseek/deepseek-v4-pro-0813",description:"DeepSeek V4 Pro via OpenRouter"}],systemPromptFile:"AGENTS.md",mcpConfig:{settingsDir:"~/.dsh",filename:"evolve-mcp.patch.yml",format:"yaml"},skillsConfig:{targetDir:"~/.dsh/skills"},defaultBaseUrl:"https://openrouter.ai/api/v1",directModelAliases:{"openrouter/deepseek/deepseek-v4.1-flash":"deepseek/deepseek-v4.1-flash","openrouter/deepseek/deepseek-v4-pro-0813":"deepseek/deepseek-v4-pro-0813"},spendTrackingEnvs:{sessionTagEnv:"EVOLVE_LITELLM_CUSTOMER_ID",runTagEnv:"EVOLVE_LITELLM_TAGS"},dshRoutePatch:{path:"~/.dsh/evolve-route.patch.yml",providerName:"evolve",contextWindow:128e3,maxTokens:32e3},sessionIdStateFile:"~/.dsh/evolve-session.json",buildCommand:({prompt:t,isResume:e,sessionId:n,homeDir:r=G})=>{let s=`${r}/.dsh`,o=`${s}/evolve-route.patch.yml`,c=`${s}/evolve-mcp.patch.yml`,u=`$(if [ -f ${c} ]; then printf ' --patch ${c}'; fi)`,l=e&&n?` --session-id ${J(n)}`:"";return `DSH_HOME=${s} DSH_PERMISSION_MODE=danger-full-access DSH_TELEMETRY_DISABLED=1 dsh --profile headless --patch ${o}${u} --json${l} -- "${t}"`}},zcode:{image:"evolve-all",apiKeyEnv:"OPENROUTER_API_KEY",effortSupport:"level",defaultModel:"openrouter/z-ai/glm-5.3",defaultReasoningEffort:"high",providerEnvMap:{openrouter:{keyEnv:"OPENROUTER_API_KEY"}},defaultBaseUrl:"https://openrouter.ai/api/v1",models:[{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 via OpenRouter"},{alias:"fireworks/glm-5.3",modelId:"fireworks/glm-5.3",description:"Zhipu GLM-5.3 via Fireworks"},{alias:"fireworks/glm-5.3-flash",modelId:"fireworks/glm-5.3-flash",description:"Zhipu GLM-5.3 Flash via Fireworks"}],systemPromptFile:"AGENTS.md",mcpConfig:{settingsDir:"~/.zcode/cli",filename:"config.json",format:"json"},skillsConfig:{targetDir:"~/.zcode/skills"},directModelAliases:{"openrouter/z-ai/glm-5.3":"z-ai/glm-5.3","openrouter/z-ai/glm-5.3-flash":"z-ai/glm-5.3-flash"},zcodeProviderConfig:{path:"~/.zcode/v2/provider_config.json",providerId:"evolve",providerName:"Evolve gateway",contextWindow:Br,maxOutputTokens:32768},checkpointDirs:["~/.zcode"],checkpointExcludes:[".zcode/v2/provider_config.json",".zcode/cli/plugins/cache",".zcode/v2/runtime"],verdictFromStream:true,buildCommand:({prompt:t,isResume:e,homeDir:n=G})=>{let r=e?"--continue ":"";return `${Object.entries(td(n)).map(([o,c])=>`${o}=${J(c)}`).join(" ")} zcode -p "${t}" ${r}--output-format stream-json`}},antigravity:{image:"evolve-all",apiKeyEnv:"GEMINI_API_KEY",effortSupport:"level",baseUrlEnv:"GOOGLE_GEMINI_BASE_URL",defaultModel:"gemini-3.8-flash",defaultReasoningEffort:"high",models:[{alias:"gemini-3.8-flash",modelId:"vertex_ai/gemini-3.8-flash",description:"Latest Flash on Vertex AI: coding + agentic planning"},{alias:"gemini-3.5-flash-lite",modelId:"vertex_ai/gemini-3.5-flash-lite",description:"Latest Flash-Lite on Vertex AI: most cost-effective"},{alias:"gemini-3.1-pro-preview",modelId:"vertex_ai/gemini-3.1-pro-preview",description:"Latest Pro on Vertex AI: complex agentic + coding"}],systemPromptFile:"AGENTS.md",mcpConfig:{settingsDir:"~/.gemini/config",filename:"mcp_config.json",format:"json"},skillsConfig:{targetDir:"~/.gemini/config/skills"},antigravitySettings:{settingsPath:"~/.gemini/antigravity-cli/settings.json"},gatewayModelAliases:{"gemini-3.8-flash":"vertex_ai/gemini-3.8-flash","gemini-3.5-flash-lite":"vertex_ai/gemini-3.5-flash-lite","gemini-3.1-pro-preview":"vertex_ai/gemini-3.1-pro-preview"},checkpointDirs:["~/.gemini"],checkpointExcludes:[".gemini/antigravity-cli/bin",".gemini/antigravity-cli/builtin",".gemini/antigravity-cli/cache"],buildCommand:({prompt:t,model:e,isResume:n,reasoningEffort:r,isExternalGateway:s})=>{let o=n?"--continue ":"",c=r?` --effort ${nd(r)}`:"",u=Kr(e,{isExternalGateway:s});return `antigravity ${o}--prompt ${J(t)} --model ${J(u)}${c} --dangerously-skip-permissions --output-format stream-json --add-dir "$PWD" < /dev/null`}}};function te(t){let e=z[t];if(!e)throw new Error(`Unknown agent type: ${t}`);return e}function Ve(t,e){if(t.models.some(s=>s.alias===e||s.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 Ge(t,e){return t.models.find(n=>n.alias===e)?.modelId??e}function rd(t){return t.startsWith("openrouter/")||Ve(z.opencode,t)?t:`openrouter/${t}`}function Vr(t){return t in z}function vt(){return Object.keys(z).filter(t=>!z[t].retired)}function F(t,e=G){return t.replace(/^~/,e)}function Z(t,e=G){let n=te(t);return `${F(n.mcpConfig.settingsDir,e)}/${n.mcpConfig.filename}`}function de(t,e=G){let n=te(t);return F(n.mcpConfig.settingsDir,e)}var D=class extends Error{field;constructor(e,n){super(n),this.name="EvolveConfigError",this.field=e;}};function Gr(t){return typeof t=="string"&&t.trim()!==""}function Me(t){return t==null?String(t):JSON.stringify(t)}function St(t){if(!t)return;if(t.type!==void 0&&!Vr(t.type))throw new D("type",`Evolve agent config: unknown agent type ${Me(t.type)}. Valid types: ${vt().join(", ")}.`);let e=t.type??Lr,n=z[e].retired;if(n)throw new D("type",`Evolve agent config: agent type "${e}" is retired; use "${n.replacedBy}" instead. Records of past ${e} runs stay readable.`);if(t.model!==void 0&&!Gr(t.model))throw new D("model",`Evolve agent config: "model" is empty (${Me(t.model)}). Pass a model id such as "${te(e).defaultModel}", or omit model entirely to use ${e}'s default.`);let r=te(e).efforts;if(t.reasoningEffort!==void 0&&r&&!r.includes(t.reasoningEffort))throw new D("reasoningEffort",`Evolve agent config: agent "${e}" honors reasoning effort ${r.map(s=>`"${s}"`).join(", ")} only; ${Me(t.reasoningEffort)} is not one of them and would be recorded but never applied.`);if(t.config!==void 0){if(!lo(e))throw new D("config",`Evolve agent config: agent "${e}" does not support a native config. Agents with native-config support: ${co().join(", ")}.`);let s=t.config;if(typeof s=="string"){if(!Gr(s))throw new D("config",`Evolve agent config: "config" is an empty path (${Me(s)}). Pass a local settings file path or an inline JSON object.`)}else if(!pn(s))throw new D("config",`Evolve agent config: "config" must be a local file path or a JSON object, received ${Me(s)}.`)}t.preset!==void 0&&zr(e,t.preset);}function zr(t,e){if(!Mr.includes(e))throw new D("preset",`Evolve agent config: unknown preset ${Me(e)}. Valid presets: ${Mr.join(", ")}.`);let n=ao(e);if(!n.includes(t))throw new D("preset",`Evolve agent config: agent "${t}" cannot guarantee preset "${e}". Agents that can: ${n.join(", ")}.`)}function oo(t){let e=z[t]?.presets;return e?Object.keys(e):[]}function ao(t){return vt().filter(e=>oo(e).includes(t))}function gn(t,e){let n={...t};for(let[r,s]of Object.entries(e)){let o=n[r];if(pn(o)&&pn(s))n[r]=gn(o,s);else if(Array.isArray(o)&&Array.isArray(s)){let c=[...o];for(let u of s)c.some(l=>ze(l)===ze(u))||c.push(u);n[r]=c;}else n[r]=s;}return n}function pn(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function lo(t){return z[t]?.nativeConfig!==void 0}function co(){return vt().filter(lo)}function id(t,e){if(e===void 0)return;let n=z[t]?.nativeConfig;if(!n)throw new D("config",`Evolve agent config: agent "${t}" does not support a native config. Agents with native-config support: ${co().join(", ")}.`);let r;if(typeof e=="string"){let s=e.replace(/^~/,process.env.HOME||"");if(!he__namespace.existsSync(s))throw new D("config",`Agent config file not found: ${s}`);let o=he__namespace.readFileSync(s,"utf-8");try{r=n.format==="toml"?smolToml.parse(o):JSON.parse(o);}catch(c){throw new D("config",`Invalid ${t} config file ${e}: ${c.message}`)}}else {let s;try{s=JSON.parse(JSON.stringify(e));}catch(o){throw new D("config",`Invalid inline ${t} config: not JSON-serializable: ${o.message}`)}if(JSON.stringify(s)!==JSON.stringify(e))throw new D("config",`Invalid inline ${t} config: expected a JSON object that can be represented without conversion`);r=s;}if(!pn(r))throw new D("config",`Invalid ${t} config: expected a ${n.format==="toml"?"TOML table":"JSON object"}.`);if(n.format==="toml"){let s;try{s=smolToml.parse(smolToml.stringify(r));}catch(o){throw new D("config",`Invalid ${t} config for TOML conversion: ${o.message}`)}if(ze(s)!==ze(r))throw new D("config",`Invalid ${t} config: the document cannot be represented losslessly as TOML (TOML has no null and no mixed-type arrays)`)}return r}function ze(t){return Array.isArray(t)?`[${t.map(ze).join(",")}]`:t&&typeof t=="object"?`{${Object.entries(t).sort(([n],[r])=>n<r?-1:n>r?1:0).map(([n,r])=>`${JSON.stringify(n)}:${ze(r)}`).join(",")}}`:JSON.stringify(t)??"null"}function Hr(t){if(!t||!Gr(t.prompt))throw new D("prompt",`run() requires a non-empty "prompt" string, received ${Me(t?.prompt)}.`)}function qr(t){if(t){for(let e of wt)if(e in t)throw new D(`observability.${e}`,`Evolve observability metadata: "${e}" is reserved for session identity and would split this run across two dashboard sessions. Reserved keys: ${wt.join(", ")}. Use a different key, or set the session tag with .withSessionTagPrefix().`)}}function mn(t){if(t.externalGateway){if(t.providerApiKey||t.providerBaseUrl||t.oauthToken)throw new Error("externalGateway cannot be combined with providerApiKey/providerBaseUrl/oauthToken (direct mode)");if(t.apiKey)throw new Error("externalGateway cannot be combined with apiKey (Evolve gateway mode)")}}function od(t){let e=t.replace(/^~/,process.env.HOME||"");if(!he__namespace.existsSync(e))throw new Error(`OAuth file not found: ${e}`);return he__namespace.readFileSync(e,"utf-8")}function io(t,e,n){if(!e.providerEnvMap||!n)return;let r=n.indexOf("/");if(r<=0)return;let s=n.slice(0,r);if(!(e.providerEnvMap[s]||!Ve(e,n)))throw new D("model",`Model "${n}" is served through the Evolve gateway only: the ${t} agent holds no ${s} key in direct mode. Set ${B} (or apiKey) to run it through the gateway, or pick a model whose route has a direct-mode key (${Object.keys(e.providerEnvMap).join(", ")}).`)}function fn(t){let e=t?.type??Lr,n=te(e),r=id(e,t?.config);t?.preset!==void 0&&zr(e,t.preset);let s={...r!==void 0?{config:r}:{},...t?.preset!==void 0?{preset:t.preset}:{}};if(t?.externalGateway){mn(t);let{apiKey:l,baseUrl:i,revoke:a}=t.externalGateway;if(!l||!i||typeof a!="function")throw new Error("externalGateway requires apiKey, baseUrl, and a revoke() function");return {type:e,apiKey:l,baseUrl:i,isDirectMode:true,externalGateway:{revoke:a},model:t.model,reasoningEffort:t.reasoningEffort,maxContextSize:t.maxContextSize,...s}}if(t?.oauthToken){if(e!=="claude")throw new Error(`oauthToken is only supported for claude agent (Claude Max subscription), not ${e}. Use providerApiKey for ${e} instead.`);return {type:e,apiKey:t.oauthToken,isDirectMode:true,isOAuth:true,model:t.model,reasoningEffort:t.reasoningEffort,maxContextSize:t.maxContextSize,...s}}if(t?.providerApiKey){io(e,n,t.model);let l=n.baseUrlEnv?process.env[n.baseUrlEnv]:void 0,i=t.providerBaseUrl??l??n.defaultBaseUrl;return {type:e,apiKey:t.providerApiKey,baseUrl:i,isDirectMode:true,model:t.model,reasoningEffort:t.reasoningEffort,maxContextSize:t.maxContextSize,...s}}if(t?.apiKey)return {type:e,apiKey:t.apiKey,isDirectMode:false,model:t.model,reasoningEffort:t.reasoningEffort,maxContextSize:t.maxContextSize,...s};let o=process.env[B];if(o)return {type:e,apiKey:o,isDirectMode:false,model:t?.model,reasoningEffort:t?.reasoningEffort,maxContextSize:t?.maxContextSize,...s};if(n.providerEnvMap){let i=(t?.model??n.defaultModel)?.split("/")[0],a=i?n.providerEnvMap[i]:void 0,d=a?process.env[a.keyEnv]:void 0;if(d){let g=(n.baseUrlEnv?process.env[n.baseUrlEnv]:void 0)??n.defaultBaseUrl;return {type:e,apiKey:d,baseUrl:g,isDirectMode:true,model:t?.model,reasoningEffort:t?.reasoningEffort,maxContextSize:t?.maxContextSize,...s}}}let c=process.env[n.apiKeyEnv];if(c){io(e,n,t?.model);let i=(n.baseUrlEnv?process.env[n.baseUrlEnv]:void 0)??n.defaultBaseUrl;return {type:e,apiKey:c,baseUrl:i,isDirectMode:true,model:t?.model,reasoningEffort:t?.reasoningEffort,maxContextSize:t?.maxContextSize,...s}}if(n.oauthEnv){let l=process.env[n.oauthEnv];if(l){if(n.oauthFileName){let i=od(l);return {type:e,apiKey:"__oauth_file__",isDirectMode:true,isOAuth:true,oauthFileContent:i,model:t?.model,reasoningEffort:t?.reasoningEffort,maxContextSize:t?.maxContextSize,...s}}return {type:e,apiKey:l,isDirectMode:true,isOAuth:true,model:t?.model,reasoningEffort:t?.reasoningEffort,maxContextSize:t?.maxContextSize,...s}}}let u=n.oauthEnv?n.oauthFileName?`, or ${n.oauthEnv}`:`, oauthToken, or ${n.oauthEnv}`:"";throw new Error(`No API key found for ${e}. Set apiKey (gateway), providerApiKey (direct)${u}, or ${B} / ${n.apiKeyEnv} env var.`)}function H(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 Wr(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 ge(t){for(let[e,n]of Object.entries(t))Wr(e,n);}var ad=/^(?:[A-Za-z_][A-Za-z0-9_-]*\$?|[0-9]+(?::[0-9]+)?)$/,uo=1e4,hn=class extends Error{constructor(n,r,s,o){super(`${r==="prepare"?"preparing the directory of":"handing over"} ${n} failed (exit ${s}): ${o.trim()||"no stderr"}`);this.path=n;this.step=r;this.exitCode=s;this.stderr=o;this.name="HomeFileError";}};function Yr(t){let e=t.trim();if(!ad.test(e))throw new D("homeOwner",`homeOwner must be a user name, a uid, or uid:gid; got ${JSON.stringify(t)}`);return e}function go(t,e){let n=t.endsWith("/")?t:`${t}/`;if(!e.startsWith(n))throw new Error(`${e} is not inside the config home ${t}`);let r=e.slice(n.length).split("/").filter(s=>s.length>0);return r.map((s,o)=>n+r.slice(0,o+1).join("/"))}function ld(t,e){let n=go(t,e).slice(0,-1);return n.length===0?"true":`for d in ${n.map(J).join(" ")}; do [ -d "$d" ] || { mkdir "$d" && printf '%s\\n' "$d" || exit 1; }; done`}function cd(t,e,n,r={}){let s=`chown -h "$o" ${[...n,e].map(J).join(" ")}`,o=r.owner?`o=${J(Yr(r.owner))} && ${s}`:`o="$(stat -c %u:%g ${J(t)})" && { [ "\${o%%:*}" = "$(id -u)" ] || ${s}; }`;return r.mode?`${o} && chmod ${r.mode} ${J(e)}`:o}async function ne(t,e,n,r={}){let s=r.homeDir??G,o=go(s,e),c=await t.commands.run(ld(s,e),{timeoutMs:uo});po(e,"prepare",c);let u=new Set(c.stdout.split(`
15
+ `).map(a=>a.trim())),l=o.slice(0,-1).filter(a=>u.has(a));await t.files.write(e,n);let i=await t.commands.run(cd(s,e,l,r),{timeoutMs:uo});po(e,"hand-over",i);}function po(t,e,n){if(n.exitCode!==0)throw new hn(t,e,n.exitCode,n.stderr??"")}function fo(t,e,n){if(typeof t!="string"||t.trim()==="")return {};let r;try{r=JSON.parse(t);}catch(s){throw new D(n,`Existing config at ${e} is not valid JSON: ${s instanceof Error?s.message:String(s)}`)}return typeof r=="object"&&r!==null&&!Array.isArray(r)?r:{}}function we(t){return t.type?t.type:t.command?"stdio":"sse"}function dd(t){let e=we(t);return {...t,type:e}}function ud(t){let{type:e,url:n,...r}=t;return we(t)==="http"&&n?{httpUrl:n,...r}:n?{url:n,...r}:r}function pd(t){return {type:we(t),...t}}function gd(t){let{type:e,...n}=t;return n.command?{...n,transport:"stdio"}:n.url&&(e==="http"||e==="sse")?{...n,transport:e}:n}function md(t){let e=we(t),{type:n,httpHeaders:r,envHttpHeaders:s,bearerTokenEnvVar:o,envVars:c,...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},i=t.headers??r;return i&&Object.keys(i).length>0&&(l.headers=i),l}return {type:e==="stdio"?"stdio":"http",...u}}function fd(t){let e=we(t);if(e==="stdio"&&t.command){let s={type:"stdio",command:t.command};return t.args&&t.args.length>0&&(s.args=t.args),t.env&&Object.keys(t.env).length>0&&(s.env=t.env),s}let n={type:e==="sse"?"sse":"http"};t.url&&(n.url=t.url);let r=t.headers??t.httpHeaders;return r&&Object.keys(r).length>0&&(n.headers=r),n}function hd(t){let e=we(t),{type:n,url:r,httpHeaders:s,envHttpHeaders:o,bearerTokenEnvVar:c,envVars:u,headers:l,...i}=t;if(e==="stdio"&&t.command)return {...i};if(r){let a={...i,serverUrl:r},d=l??s;return d&&Object.keys(d).length>0&&(a.headers=d),a}return {...i}}async function yn(t,e,n,r,s){ge(n);let o=de(e,s),c=Z(e,s);await t.files.makeDir(o);let u={};try{u=fo(await t.files.read(c),c,"mcpServers");}catch(i){if(!H(i))throw i}let l=Object.fromEntries(Object.entries(n).map(([i,a])=>[i,r(a)]));await t.files.write(c,JSON.stringify({...u,mcpServers:l},null,2));}async function bn(t,e,n,r){ge(n);let s=de("claude",r),o=Z("claude",r),c=Object.fromEntries(Object.entries(n).map(([l,i])=>[l,pd(i)]));await t.files.write(`${e}/.mcp.json`,JSON.stringify({mcpServers:c},null,2)),await t.files.makeDir(s);let u={};try{let l=await t.files.read(o);typeof l=="string"&&(u=JSON.parse(l));}catch(l){if(!H(l))throw l}u.enableAllProjectMcpServers=true,await t.files.write(o,JSON.stringify(u,null,2));}async function _n(t,e,n){await yn(t,"gemini",e,dd,n);}async function wn(t,e,n){await yn(t,"qwen",e,ud,n);}async function kn(t,e,n,r,s,o){let c=Z(e,s),u={};try{let p=await t.files.read(c);typeof p=="string"&&(u=JSON.parse(p));}catch(p){if(!H(p))throw p}let l=n.split("."),i=u;for(let p=0;p<l.length-1;p++){let g=l[p];(typeof i[g]!="object"||i[g]===null)&&(i[g]={}),i=i[g];}let a=l[l.length-1],d=typeof i[a]=="object"&&i[a]!==null?i[a]:{};i[a]={...d,...r},await ne(t,c,JSON.stringify(u,null,2),{homeDir:s,owner:o});}async function Zr(t,e,n,r){let s=Z("qwen",n),o={};try{let i=await t.files.read(s);typeof i=="string"&&(o=JSON.parse(i));}catch(i){if(!H(i))throw i}let c=o.model??{},u=c.generationConfig??{},l=u.extra_body??{};o.model={...c,generationConfig:{...u,extra_body:{...l,enable_thinking:e}}},await ne(t,s,JSON.stringify(o,null,2),{homeDir:n,owner:r});}async function vn(t,e,n){await yn(t,"kimi",e,gd,n);}async function Sn(t,e,n){await yn(t,"antigravity",e,hd,n);}async function xn(t,e,n,r,s){let o=F(e,r),c={};try{c=fo(await t.files.read(o),o,"antigravitySettings");}catch(i){if(!H(i))throw i}let u=typeof c.customModelsConfig=="object"&&c.customModelsConfig!==null?c.customModelsConfig:{},l=typeof u.customModels=="object"&&u.customModels!==null?u.customModels:{};c.modelProvider="gemini",c.telemetryEnabled=false,c.allowNonWorkspaceAccess=true,c.customModelsConfig={...u,customModels:{...l,[n]:{modelName:n}}},await ne(t,o,JSON.stringify(c,null,2),{homeDir:r,owner:s});}async function Rn(t,e,n){ge(n);let r=`${e}/.factory`,s=`${r}/mcp.json`;await t.files.makeDir(r);let o={};try{let u=await t.files.read(s);typeof u=="string"&&(o=JSON.parse(u));}catch(u){if(!H(u))throw u}let c=Object.fromEntries(Object.entries(n).map(([u,l])=>[u,md(l)]));await t.files.write(s,JSON.stringify({...o,mcpServers:c},null,2));}async function Cn(t,e,n,r,s){let o=F(e.settingsPath,r),c={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 ne(t,o,JSON.stringify(c,null,2),{homeDir:r,owner:s});}async function En(t,e,n){ge(e);let r=de("zcode",n),s=Z("zcode",n);await t.files.makeDir(r);let o={};try{let l=await t.files.read(s);typeof l=="string"&&l.trim()&&(o=JSON.parse(l));}catch(l){if(!H(l))throw l}let c=typeof o.mcp=="object"&&o.mcp!==null?o.mcp:{},u=Object.fromEntries(Object.entries(e).map(([l,i])=>[l,fd(i)]));await t.files.write(s,JSON.stringify({...o,mcp:{...c,servers:u}},null,2));}async function Tn(t,e,n,r){let s=F(e.path,n),o={type:"openai-chat-completions",baseUrl:e.baseUrl};Object.keys(e.headers).length>0&&(o.headers=e.headers);let c={schemaVersion:1,config:{providerConfigRules:{providerRules:[{providerId:e.providerId,providerName:e.providerName,config:{group:"standard-personal",access:{type:"api-key",apiKey:e.apiKey},api:o,personalModelIds:[e.model]}}]},modelConfigRules:{providerModelRules:[{providerId:e.providerId,modelId:e.model,config:{enabled:true,properties:{contextWindow:e.contextWindow,supportsToolCall:true},optionSpecs:{maxOutputTokens:{max:e.maxOutputTokens,map:'{"max_tokens": maxOutputTokens}'},reasoningLevel:{values:["disabled","low","medium","high"],map:'reasoningLevel == "disabled" ? {} : {"reasoning_effort": reasoningLevel}'}}}}],manualProviderModelRules:[]},defaultModelSelection:{providerId:e.providerId,modelId:e.model,options:{reasoningLevel:e.reasoningLevel}}}};await ne(t,s,JSON.stringify(c,null,2),{homeDir:n,owner:r,mode:"600"});}async function Pn(t,e,n){ge(n);let r=`${e}/opencode.json`,s={};try{let c=await t.files.read(r);typeof c=="string"&&(s=JSON.parse(c));}catch(c){if(!H(c))throw c}let o=Object.fromEntries(Object.entries(n).map(([c,u])=>[c,yd(u)]));await t.files.write(r,JSON.stringify({...s,mcp:o},null,2));}function yd(t){let e=we(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 bd(t){if(we(t)==="stdio"&&t.command){let s={command:t.command};return t.args&&t.args.length>0&&(s.args=t.args),t.cwd&&(s.cwd=t.cwd),t.env&&Object.keys(t.env).length>0&&(s.env=t.env),s}let n={url:t.url},r=t.headers??t.httpHeaders;return r&&Object.keys(r).length>0&&(n.headers=r),n}var ho={hostConfigDiscovery:"off",notifyOnStartupConnect:false,scriptMode:false};async function An(t,e,n){ge(e);let r=de("pi",n),s=Z("pi",n);await t.files.makeDir(r);let o={};try{let l=await t.files.read(s);typeof l=="string"&&(o=JSON.parse(l));}catch(l){if(!H(l))throw l}let c=typeof o.settings=="object"&&o.settings!==null?o.settings:{},u=Object.fromEntries(Object.entries(e).map(([l,i])=>[l,bd(i)]));await t.files.write(s,JSON.stringify({...o,settings:{...c,...ho},mcpServers:u},null,2));}function _d(t,e){if(we(e)==="stdio"&&e.command){if(e.env&&Object.keys(e.env).length>0)throw new Error(`MCP server "${t}": Prime Agent passes a stdio server's env only as references to the sandbox environment (its settings.json takes { env: NAME }, never literal values). Set the values in the sandbox environment and name them with envVars instead of env.`);let o={type:"stdio",command:e.command};return e.args&&e.args.length>0&&(o.args=e.args),e.cwd&&(o.cwd=e.cwd),e.envVars&&e.envVars.length>0&&(o.env=Object.fromEntries(e.envVars.map(c=>[c,{env:c}]))),o}let r={type:"http",url:e.url},s=e.headers??e.httpHeaders;return s&&Object.keys(s).length>0&&(r.headers=s),e.bearerTokenEnvVar&&(r.bearerTokenEnvVar=e.bearerTokenEnvVar),r}async function In(t,e,n){ge(e);let r=de("prime-agent",n),s=Z("prime-agent",n);await t.files.makeDir(r);let o={};try{let u=await t.files.read(s);typeof u=="string"&&(o=JSON.parse(u));}catch(u){if(!H(u))throw u}let c=Object.fromEntries(Object.entries(e).map(([u,l])=>[u,_d(u,l)]));await t.files.write(s,JSON.stringify({...o,mcpServers:c},null,2));}async function Xr(t,e,n,r,s){let c=`${F(e.agentDir,r)}/models.json`,u={};try{let d=await t.files.read(c);typeof d=="string"&&d.trim()&&(u=JSON.parse(d));}catch(d){if(!H(d))throw d}let l=typeof u.providers=="object"&&u.providers!==null?u.providers:{},i={id:e.model,reasoning:e.reasoning};e.reasoning&&(e.thinkingLevel==="xhigh"||e.thinkingLevel==="max")&&(i.thinkingLevelMap={[e.thinkingLevel]:e.thinkingLevel});let a={baseUrl:e.baseUrl,api:"openai-completions",apiKey:e.apiKeyRef==="dollar"?`$${e.apiKeyEnv}`:e.apiKeyEnv,models:[i]};Object.keys(n).length>0&&(a.headers=n),await ne(t,c,JSON.stringify({...u,providers:{...l,[e.providerName]:a}},null,2),{homeDir:r,owner:s});}async function Qr(t,e,n,r){let s=F(e,r),o=s.slice(0,s.lastIndexOf("/"));await t.files.makeDir(o);let c={};try{let u=await t.files.read(s);typeof u=="string"&&u.trim()&&(c=JSON.parse(u));}catch(u){if(!H(u))throw u}await t.files.write(s,JSON.stringify(yo(c,n),null,2));}function yo(t,e){let n={...t};for(let[r,s]of Object.entries(e)){let o=n[r];mo(s)&&mo(o)?n[r]=yo(o,s):n[r]=s;}return n}function mo(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function es(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)?t:void 0}function bo(t,e,n){let r=t[e];if(r===void 0)return {};let s=es(r);if(!s){let o=Array.isArray(r)?"an array":`a ${typeof r}`;throw new Error(`Refusing to rewrite "${e}" in ${n}: expected a TOML table, found ${o}`)}return s}function ts(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((o,c)=>ts(o,e[c]));let n=es(t),r=es(e);if(!n||!r)return false;let s=Object.keys(n);return s.length===Object.keys(r).length&&s.every(o=>o in r&&ts(n[o],r[o]))}async function _o(t,e){let n="";try{let r=await t.files.read(e);typeof r=="string"&&(n=r);}catch(r){if(!H(r))throw r;return {}}if(!n.trim())return {};try{return smolToml.parse(n)}catch(r){throw new Error(`Failed to parse TOML at ${e}: ${r.message}`)}}async function wo(t,e,n,r,s){await ne(t,e,ko(n),{homeDir:r,owner:s});}function ko(t){return smolToml.stringify(t).trimEnd()+`
16
+ `}function vd(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 o=e.httpHeaders??e.headers;o&&Object.keys(o).length>0&&(n.http_headers=o),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 On(t,e,n){for(let[c,u]of Object.entries(e))Wr(c,u);let r=Z("codex",n);await t.files.makeDir(de("codex",n));let s=await _o(t,r);s.experimental_use_rmcp_client===void 0&&(s.experimental_use_rmcp_client=true);let o=bo(s,"mcp_servers",r);s.mcp_servers=o;for(let[c,u]of Object.entries(e))o[c]===void 0&&(o[c]=vd(c,u));await t.files.write(r,ko(s));}async function Mn(t,e,n,r={},s,o){let c=Z("codex",s),u=await _o(t,c),l={...n?{[Y]:n.sessionTagEnv,[ie]:n.runTagEnv}:{},...r},i={name:"Evolve Gateway",base_url:e,env_key:"OPENAI_API_KEY",wire_api:"responses",...Object.keys(l).length>0?{env_http_headers:l}:{}},a=bo(u,"model_providers",c);u.model_provider==="evolve-gateway"&&ts(a["evolve-gateway"],i)||(u.model_provider="evolve-gateway",a["evolve-gateway"]=i,u.model_providers=a,await wo(t,c,u,s,o));}async function ns(t,e,n,r,s,o){let c=F(e.configPath,s),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 wo(t,c,u,s,o);}var vo=/^[A-Za-z0-9_-]{1,32}$/;function xd(t,e){if(!vo.test(t))throw new Error(`MCP server "${t}" cannot be registered with dsh: dsh-mcp-client server names must match ${vo}`);if(e.type==="sse")throw new Error(`MCP server "${t}" uses the sse transport, which dsh does not support (stdio or streamable-http only)`);let n={serverName:t};if(e.command)return n.transport="stdio",n.command=e.command,e.args&&e.args.length>0&&(n.args=e.args),e.env&&Object.keys(e.env).length>0&&(n.env=e.env),e.cwd&&(n.cwd=e.cwd),n;n.transport="streamable-http",n.url=e.url;let r=e.headers??e.httpHeaders;return r&&Object.keys(r).length>0&&(n.headers=r),n}async function Dn(t,e,n){ge(e);let r=de("dsh",n),s=Z("dsh",n);await t.files.makeDir(r);let o=Object.entries(e).map(([c,u])=>({id:`evolve-mcp-${c}`,name:"@deepseek-ai/dsh-mcp-client",config:xd(c,u)}));await t.files.write(s,`# Evolve-owned dsh patch: MCP servers as @deepseek-ai/dsh-mcp-client rows. Rewritten at setup.
17
+ `+yaml.stringify([{insert:o}]));}var Rd=/^[A-Z_][A-Z0-9_]*$/;function So(t){if(!Rd.test(t))throw new Error(`dsh route patch: "${t}" is not an environment variable name`);return `!!js process.env.${t}`}function De(t){return JSON.stringify(t)}function xo(t){let e=["# Evolve-owned dsh patch: the pi-ai route, the default model and effort, and the rows a","# headless run must not carry. Rewritten before every run. Names env variables only \u2014","# never a key or a URL value.","- id: llm-pi-ai"," config:"," providers:",` ${De(t.providerName)}:`,` apiKeyEnv: ${De(t.apiKeyEnv)}`," api: openai-completions",` baseURL: ${So(t.baseUrlEnv)}`];if(t.headerEnvs&&Object.keys(t.headerEnvs).length>0){e.push(" headers:");for(let[n,r]of Object.entries(t.headerEnvs))e.push(` ${De(n)}: ${So(r)}`);}return e.push(" compat:"," supportsDeveloperRole: false"," maxTokensField: max_tokens"," models:",` - id: ${De(t.model)}`,` contextWindow: ${t.contextWindow}`,` maxTokens: ${t.maxTokens}`," reasoningEfforts:",...kt.map(n=>` ${n}: ${n}`),"- id: agent-default-model"," config:",` provider: ${De(t.providerName)}`,` model: ${De(t.model)}`),t.reasoningEffort&&e.push(` reasoningEffort: ${De(t.reasoningEffort)}`),e.push("- id: session-log-deepseek"," config:"," enabled: false","- id: plugin-package-inventory-deepseek"," config:"," enabled: false","- id: session-title-llm"," disabled: true","- id: tool-web"," config:"," search: false"," fetch: true"," searchTimeoutMs: 60000",""),e.join(`
18
+ `)}async function Un(t,e,n,r){await ne(t,F(e.path,n),xo(e),{homeDir:n,owner:r});}async function rs(t,e,n,r,s){if(!(!r||Object.keys(r).length===0))switch(t){case "claude":await bn(e,n,r,s);break;case "codex":await On(e,r,s);break;case "gemini":await _n(e,r,s);break;case "qwen":await wn(e,r,s);break;case "kimi":await vn(e,r,s);break;case "opencode":await Pn(e,n,r);break;case "droid":await Rn(e,n,r);break;case "pi":await An(e,r,s);break;case "prime-agent":await In(e,r,s);break;case "dsh":await Dn(e,r,s);break;case "zcode":await En(e,r,s);break;case "antigravity":await Sn(e,r,s);break;default:throw new Error(`Unknown agent type for MCP config: ${t}`)}}function U(t,e,n="type"){let{[n]:r,...s}=e;return {sessionUpdate:"harness_event",type:t,payload:s}}function Te(t){let e=new Set;return (n,r)=>{let s=`${n}:${r}`;e.has(s)||(e.add(s),console.warn(`[${t} parser] unknown ${n} "${r}" passed through as harness_event`));}}function Ro(t){return !!t&&t.sessionUpdate!=="error"&&t.sessionUpdate!=="usage"&&t.sessionUpdate!=="harness_event"}function I(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)}var Cd={run_command:"execute",command_status:"execute",send_command_input:"execute",notebook_execution:"execute",view_file:"read",read_resource:"read",list_dir:"search",find_by_name:"search",grep_search:"search",list_resources:"search",write_to_file:"edit",replace_file_content:"edit",multi_replace_file_content:"edit",sed_file:"edit",notebook_edit:"edit",read_url_content:"fetch",search_web:"fetch",open_browser_url:"fetch",invoke_subagent:"think",define_subagent:"think",manage_subagents:"think",browser_subagent:"think"},To=["TargetFile","AbsolutePath","DirectoryPath","SearchPath"],Ed=["CommandLine",...To,"Query","Pattern","Url","Action"],Td=new Set(["system_message","checkpoint"]);function $n(){let t,e,n=new Set,r="",s=Te("antigravity");return function(g){let m;try{m=JSON.parse(g);}catch{return null}if(!os(m))return null;let f=$(m,"event");if(!f&&typeof m.status=="string"&&"conversation_id"in m)return o(u(m),m);if(!f)return null;switch(f){case "init":{let h=ue(m.init),b=h?$(h,"model"):"";return b&&(t=b),o([U(f,m,"event")],m)}case "step_update":{let h=ue(m.step_update);return h?o(c(h),h):o([U(f,m,"event")],m)}case "result":{let h=ue(m.result);return h?o(u(h),h):o([U(f,m,"event")],m)}default:return s("event type",f),o([U(f,m,"event")],m)}};function o(p,g){if(p.length===0)return null;let m=$(g,"conversation_id");m&&(e=m);let f=Pd(g),h=d(g);return p.map(b=>({...e!==void 0?{sessionId:e}:{},update:b,...t!==void 0?{model:t}:{},...h!==void 0?{messageId:h}:{},...f!==void 0?{extra:f}:{}}))}function c(p){let g=$(p,"step_type"),m=$(p,"state"),f=[];switch(g){case "agent_response":{let h=$(p,"thinking_delta");h&&f.push({sessionUpdate:"agent_thought_chunk",content:{type:"text",text:h}});let b=$(p,"text_delta");b&&(r+=b,f.push({sessionUpdate:"agent_message_chunk",content:{type:"text",text:b}}));let _=ss(p.usage);return _&&f.push({sessionUpdate:"usage",scope:"call",usage:_}),f}case "tool":case "subagent":{let h=a(p),b=$(p,"tool_name")||$(ue(p.tool_info)??{},"name")||(g==="subagent"?"invoke_subagent":"tool"),_=g==="subagent"?p.subagent_info:ue(p.tool_info)?.parameters;return n.has(h)||(n.add(h),f.push(l(h,b,_))),m==="DONE"?f.push(i(h,g,p)):f.length===0&&f.push({sessionUpdate:"tool_call_update",toolCallId:h,status:"in_progress"}),f}case "error_message":return [{sessionUpdate:"error",message:I([$(ue(p.error)??{},"message"),$(p,"text_delta")],p),fatal:false}];case "user_input":return [];default:{Td.has(g)||s("step type",g);let h=[U(g||"step_update",p,"step_type")],b=ss(p.usage);return b&&h.push({sessionUpdate:"usage",scope:"call",usage:b}),h}}}function u(p){let g=[],m=$(p,"response");m&&!r.includes(m)&&(r+=m,g.push({sessionUpdate:"agent_message_chunk",content:{type:"text",text:m}}));let f=ss(p.usage);f&&g.push({sessionUpdate:"usage",scope:"run",usage:f});let h=$(p,"status");return h!=="SUCCESS"&&g.push({sessionUpdate:"error",message:I([$(p,"error"),`antigravity ended the run with result status "${h}" and no error text`],p),fatal:true}),g}function l(p,g,m){let f=ue(m)??{},h=Eo(f,Ed),b=Eo(f,To),_=b?[{path:b}]:[],w=h?`${g} ${h}`:g;if(g==="run_command"&&h&&(w=`\`${h}\``),g==="call_mcp_tool"){let y=$(f,"ServerName"),k=$(f,"ToolName");(y||k)&&(w=`call_mcp_tool ${y}/${k}`);}if(g==="invoke_subagent"){let y=Co(m).map(k=>$(k,"type_name")).filter(Boolean);y.length>0&&(w=`invoke_subagent ${y.join(", ")}`);}return {sessionUpdate:"tool_call",toolCallId:p,title:w,toolName:g,kind:Cd[g]??"other",status:"pending",rawInput:m,locations:_}}function i(p,g,m){let f=[],h="completed",b;if(g==="subagent"){b=m.subagent_info;let _=Co(m.subagent_info).map(w=>{let y=$(w,"type_name"),k=$(w,"conversation_id");return k?`${y}: conversation ${k}`:y}).filter(Boolean);_.length>0&&f.push({type:"content",content:{type:"text",text:_.join(`
19
+ `)}});}else {let _=ue(m.tool_info);b=_??void 0;let w=_?$(_,"output"):"";w&&f.push({type:"content",content:{type:"text",text:w}});let y=_?ue(_.error):null;if(y){h="failed";let k=I([$(y,"message"),$(y,"type")],y);w||f.push({type:"content",content:{type:"text",text:k}});}}return {sessionUpdate:"tool_call_update",toolCallId:p,status:h,content:f,...b!==void 0?{rawOutput:b}:{}}}function a(p){return `${$(p,"conversation_id")||e||"conversation"}:${String(p.step_index)}`}function d(p){if($(p,"step_type")==="agent_response"&&typeof p.step_index=="number")return a(p)}}function ss(t){let e=ue(t);if(!e)return null;let n=is(e.input_tokens),r=is(e.output_tokens),s=is(e.cache_read_tokens),o={};(n!==void 0||s!==void 0)&&(o.promptTokens=(n??0)+(s??0)),r!==void 0&&(o.completionTokens=r),s!==void 0&&(o.cachedTokens=s);let c={};for(let[u,l]of Object.entries(e))u==="input_tokens"||u==="output_tokens"||u==="cache_read_tokens"||l!=null&&(c[u]=l);return Object.keys(c).length>0&&(o.extra=c),o}function Pd(t){let e={};for(let n of ["status","num_turns","step_index","step_type","state","duration_seconds"]){let r=t[n];r!=null&&(e[n]=r);}return Object.keys(e).length>0?e:void 0}function Co(t){let e=ue(t)?.subagents;return Array.isArray(e)?e.filter(os):[]}function Eo(t,e){for(let n of e){let r=t[n];if(typeof r=="string"&&r.length>0)return r}return ""}function is(t){return typeof t=="number"&&Number.isFinite(t)?t:void 0}function os(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function ue(t){return os(t)?t:null}function $(t,e){let n=t[e];return typeof n=="string"?n:""}function Ln(t){return typeof t=="number"&&Number.isFinite(t)?t:void 0}function xt(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t,n=Ln(e.input_tokens),r=Ln(e.output_tokens),s=Ln(e.cache_read_input_tokens),o=Ln(e.cache_creation_input_tokens),c={};(n!==void 0||s!==void 0||o!==void 0)&&(c.promptTokens=(n??0)+(s??0)+(o??0)),r!==void 0&&(c.completionTokens=r),s!==void 0&&(c.cachedTokens=s);let u={};for(let[l,i]of Object.entries(e))l==="input_tokens"||l==="output_tokens"||i!=null&&(u[l]=i);return Object.keys(u).length>0&&(c.extra=u),c}function oe(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 Fn(){let t={};return function(i){let a;try{a=JSON.parse(i);}catch{return null}if(a._meta||a._prompt)return null;let d=a.session_id;switch(a.type){case "system":return null;case "assistant":{let p=n(a.message?.content,"assistant")??[],g=xt(a.message?.usage);return g&&p.push({sessionUpdate:"usage",scope:"call",usage:g}),e(p,a,d)}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,d)}case "result":{let p=[],g=typeof a.total_cost_usd=="number"&&Number.isFinite(a.total_cost_usd)?a.total_cost_usd:void 0,m=xt(a.usage)??(g!==void 0?{}:null);if(m&&(g!==void 0&&(m.costUsd=g),p.push({sessionUpdate:"usage",scope:"run",usage:m})),a.is_error===true){let h=(Array.isArray(a.errors)?a.errors:[]).filter(b=>typeof b=="string"&&b.length>0).join(`
20
+ `);p.push({sessionUpdate:"error",message:I([h,a.result,a.subtype],a),fatal:true});}return e(p,a,d)}default:return null}};function e(l,i,a){if(!l||l.length===0)return null;let d=i.message,p=oe(i.timestamp),g=typeof d?.model=="string"&&d.model?d.model:void 0,m=typeof d?.id=="string"&&d.id?d.id:void 0,f=typeof i.parent_tool_use_id=="string"&&i.parent_tool_use_id?i.parent_tool_use_id:void 0,h={};for(let b of ["stop_reason","stop_sequence","requestId"]){let _=d?.[b];_!=null&&(h[b]=_);}return l.map(b=>({sessionId:a,update:b,...p!==void 0?{timestamp:p}:{},...g!==void 0?{model:g}:{},...m!==void 0?{messageId:m}:{},...f!==void 0?{parentToolCallId:f}:{},...Object.keys(h).length>0?{extra:h}:{}}))}function n(l,i,a){if(typeof l=="string")return i==="user"?null:[{sessionUpdate:"agent_message_chunk",content:{type:"text",text:l}}];if(!l||!Array.isArray(l))return null;let d=[];for(let p of l){let g=null;switch(p.type){case "text":case "text_delta":if(i==="user")break;g={sessionUpdate:"agent_message_chunk",content:{type:"text",text:p.text}};break;case "image":if(i==="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 m=r(p);g={sessionUpdate:"tool_call",toolCallId:p.id,status:"pending",...m,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 m=t[p.tool_use_id];if(!m||(delete t[p.tool_use_id],m.name==="TodoWrite"))break;g={sessionUpdate:"tool_call_update",toolCallId:p.tool_use_id,status:"is_error"in p&&p.is_error?"failed":"completed",...s(p,m),...a!=null?{rawOutput:a}:{}};break}}g&&d.push(g);}return d.length>0?d:null}function r(l){let i=l.name,a=l.input||{};switch(i){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 d="";return a.limit?d=" ("+((a.offset??0)+1)+" - "+((a.offset??0)+a.limit)+")":a.offset&&(d=" (from line "+(a.offset+1)+")"),{title:"Read "+(a.file_path??"File")+d,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 d=a.file_path;return {title:d?`Edit \`${d}\``:"Edit",kind:"edit",content:d?[{type:"diff",path:d,oldText:a.old_string??null,newText:a.new_string??""}]:[],locations:d?[{path:d}]:[],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 d="Find";return a.path&&(d+=` \`${a.path}\``),a.pattern&&(d+=` \`${a.pattern}\``),{title:d,kind:"search",content:[],locations:a.path?[{path:a.path}]:[],rawInput:a}}case "Grep":{let d="grep";return a["-i"]&&(d+=" -i"),a["-n"]&&(d+=" -n"),a["-A"]!==void 0&&(d+=` -A ${a["-A"]}`),a["-B"]!==void 0&&(d+=` -B ${a["-B"]}`),a["-C"]!==void 0&&(d+=` -C ${a["-C"]}`),a.output_mode==="files_with_matches"?d+=" -l":a.output_mode==="count"&&(d+=" -c"),a.head_limit!==void 0&&(d+=` | head -${a.head_limit}`),a.glob&&(d+=` --include="${a.glob}"`),a.type&&(d+=` --type=${a.type}`),a.multiline&&(d+=" -P"),d+=` "${a.pattern??""}"`,a.path&&(d+=` ${a.path}`),{title:d,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 d=`"${a.query??""}"`;return a.allowed_domains?.length>0&&(d+=` (allowed: ${a.allowed_domains.join(", ")})`),a.blocked_domains?.length>0&&(d+=` (blocked: ${a.blocked_domains.join(", ")})`),{title:d,kind:"fetch",content:[],rawInput:a}}case "TodoWrite":return {title:Array.isArray(a.todos)?`Update TODOs: ${a.todos.map(d=>d.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(i?.startsWith("mcp__")){let d=i.split("__"),p=d[1]||"mcp",g=d.slice(2).join("__")||i;return {title:`${p}: ${g}`,kind:"other",content:[],rawInput:a}}return {title:i||"Unknown Tool",kind:"other",content:[],rawInput:a}}}function s(l,i){return i?.name==="ExitPlanMode"?{title:"Exited Plan Mode"}:o(l.content)}function o(l){return Array.isArray(l)&&l.length>0?{content:l.map(i=>({type:"content",content:c(i)}))}:typeof l=="string"&&l.length>0?{content:[{type:"content",content:{type:"text",text:l}}]}:{}}function c(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(i=>({content:i.content,status:i.status||"pending",priority:"medium"}))}}function Nn(){let e;return function(a){let d;try{d=JSON.parse(a);}catch{return null}if(d._meta||d._prompt)return null;let p=[];switch(d.type){case "thread.started":return typeof d.thread_id=="string"&&d.thread_id&&(e=d.thread_id),null;case "turn.started":return null;case "turn.completed":{let g=n(d.usage);if(!g)return null;p.push({update:{sessionUpdate:"usage",scope:"run",usage:g}});break}case "error":{let g=I([d.message],d);p.push({update:{sessionUpdate:"error",message:g,fatal:false}});break}case "turn.failed":{let g=I([d.error?.message],d.error??d);p.push({update:{sessionUpdate:"error",message:g,fatal:true}});break}case "item.started":{let g=d.item;if(!g)return null;let m=r(g);m&&p.push({update:m});break}case "item.updated":{let g=d.item;if(!g)return null;let m=s(g);m&&p.push({update:m});break}case "item.completed":{let g=d.item;if(!g)return null;let m=o(g);m&&p.push({update:m});break}default:return null}return p.length===0?null:e===void 0?p:p.map(g=>({sessionId:e,...g}))};function n(i){if(!i||typeof i!="object"||Array.isArray(i))return null;let a=i,d=b=>typeof b=="number"&&Number.isFinite(b)?b:void 0,p={},g=d(a.input_tokens),m=d(a.output_tokens),f=d(a.cached_input_tokens);g!==void 0&&(p.promptTokens=g),m!==void 0&&(p.completionTokens=m),f!==void 0&&(p.cachedTokens=f);let h={};for(let[b,_]of Object.entries(a))b==="input_tokens"||b==="output_tokens"||b==="cached_input_tokens"||_!=null&&(h[b]=_);return Object.keys(h).length>0&&(p.extra=h),p}function r(i){let a=i.id;switch(i.type){case "mcp_tool_call":return {type:"mcp_tool_call",name:`${i.server}:${i.tool}`},{sessionUpdate:"tool_call",toolCallId:a,title:`${i.server}: ${i.tool}`,toolName:`mcp__${i.server}__${i.tool}`,kind:"other",status:"in_progress",rawInput:i.arguments,content:[]};case "command_execution":return {type:"command_execution",name:i.command},{sessionUpdate:"tool_call",toolCallId:a,title:i.command?`\`${i.command}\``:"Execute Command",toolName:"command_execution",kind:"execute",status:"in_progress",rawInput:{command:i.command},content:[]};case "web_search":return {type:"web_search",name:i.query},{sessionUpdate:"tool_call",toolCallId:a,title:`Search: ${i.query??""}`,toolName:"web_search",kind:"fetch",status:"in_progress",content:[]};case "todo_list":return {sessionUpdate:"plan",entries:l(i.items)};default:return null}}function s(i){return i.type==="todo_list"?{sessionUpdate:"plan",entries:l(i.items)}:null}function o(i){let a=i.id;switch(i.type){case "error":return {sessionUpdate:"error",message:I([i.message],i),fatal:false};case "reasoning":return {sessionUpdate:"agent_thought_chunk",content:{type:"text",text:i.text??i.summary?.join(`
17
21
  `)??i.content?.join(`
18
- `)??""}};case "agent_message":return {sessionUpdate:"agent_message_chunk",content:{type:"text",text:i.text??""}};case "mcp_tool_call":{let p=d(i.result),g=i.status==="failed"||i.error?"failed":"completed";return {sessionUpdate:"tool_call_update",toolCallId:o,status:g,content:p,rawOutput:i}}case "command_execution":{let p=i.aggregated_output?[{type:"content",content:{type:"text",text:i.aggregated_output}}]:[],g=i.status==="completed"||i.exit_code===0?"completed":"failed";return {sessionUpdate:"tool_call_update",toolCallId:o,status:g,content:p,rawOutput:i}}case "file_change":{let p=i.changes??[],g=p.map(h=>({path:h.path})),m=p.length===1?`${p[0].kind==="add"?"Create":"Edit"} ${p[0].path}`:`Edit ${p.length} files`;return {sessionUpdate:"tool_call",toolCallId:o,title:m,toolName:"file_change",kind:"edit",status:i.status==="completed"?"completed":"failed",rawInput:{changes:p},content:p.map(h=>({type:"diff",path:h.path,oldText:h.kind==="add"?null:"",newText:""})),locations:g}}case "web_search":return {sessionUpdate:"tool_call",toolCallId:o,title:`Search: ${i.query??""}`,toolName:"web_search",kind:"fetch",status:"completed",content:[]};case "todo_list":return {sessionUpdate:"plan",entries:c(i.items)};default:return null}}function d(i){return i?.content?Array.isArray(i.content)?i.content.map(o=>({type:"content",content:u(o)})):typeof i.content=="string"?[{type:"content",content:{type:"text",text:i.content}}]:[]:[]}function u(i){return i.type==="text"?{type:"text",text:i.text??""}:i.type==="image"?{type:"image",data:i.data??"",mimeType:i.mime_type??i.mimeType??"",uri:i.uri}:i}function c(i){if(!Array.isArray(i))return [];let o=false;return i.map(l=>{let p;return l.completed?p="completed":o?p="pending":(p="in_progress",o=true),{content:l.text??"",status:p,priority:"medium"}})}}var Fl={applypatch:"edit",apply_patch:"edit",create:"edit",edit:"edit",grep:"search",glob:"search",ls:"search",read:"read",write:"edit",execute:"execute",execute_cli:"execute",fetchurl:"fetch",fetch_url:"fetch",webfetch:"fetch",web_fetch:"fetch",websearch:"fetch",web_search:"fetch",skill:"execute",task:"think",todowrite:"other",todo_write:"other"},Bl=new Set(["assistant_text_complete","thinking_text_complete","droid_working_state_changed","permission_resolved","settings_updated","session_title_updated","mcp_status_changed","session_token_usage_changed","mission_state_changed","mission_features_changed","mission_progress_entry","mission_heartbeat","mission_worker_started","mission_worker_completed","mcp_auth_required","mcp_auth_completed","structured_output"]);function Xt(){let t=new Map,e,n,r=false,s="",a;return function(u){let c;try{c=JSON.parse(u);}catch{return null}if(!li(c))return null;let i=Nl(c);if(i.sessionId&&(e=i.sessionId),i.errorText)return [ar(e,i.errorText,true)];if(i.resultText)return s=i.resultText,r=true,[Re(e,i.resultText)];if(i.handled)return null;let l=jl(c)??c,p=ai(l);p&&(e=p);let g=[],m=C(l,"type");switch(m){case "system":{let f=C(l,"model");return f&&(n=f),null}case "message":{let f=C(l,"role"),y=C(l,"text")||cr(l.content);if(!y)break;f==="assistant"&&(r=true,s=y,g.push(Re(e,y)));break}case "completion":{let f=C(l,"finalText")||C(l,"result");f&&(!r||f!==s)&&(r=true,s=f,g.push(Re(e,f)));let y=rt(l.usage);y&&g.push({sessionId:e,update:{sessionUpdate:"usage",scope:"run",usage:y}});break}case "assistant_text_delta":{let f=C(l,"textDelta")||C(l,"text");f&&(r=true,s+=f,g.push(Re(e,f)));break}case "thinking_text_delta":{let f=C(l,"textDelta")||C(l,"text");if(f){let y=ii(l,f,a);y&&(a=y.signature,g.push({sessionId:e,update:y.event}));}break}case "reasoning":{let f=C(l,"text");if(f){let y=ii(l,f,a);y&&(a=y.signature,g.push({sessionId:e,update:y.event}));}break}case "assistant":{let f=C(l,"text")||cr(U(l.message)?.content);f&&(r=true,s=f,g.push(Re(e,f)));break}case "tool_call":case "tool_call_delta":{let f=U(l.toolUse)??U(l.tool_use)??l,y=oi(f,t);y&&g.push({sessionId:e,update:y});break}case "tool_result":{let f=Kl(l,t);f&&g.push({sessionId:e,update:f});break}case "tool_progress_update":case "tool_progress":{let f=Vl(l);f&&g.push({sessionId:e,update:f});break}case "create_message":{for(let f of Jl(l,t)){if(f.sessionUpdate==="agent_message_chunk"){let y=f.content.type==="text"?f.content.text:"";if(r&&y===s)continue;r=true,s=y;}g.push({sessionId:e,update:f});}break}case "result":{if(l.is_error===true||l.subtype==="failure"){g.push(ar(e,D([ae(l.result),ae(l.error),ae(l.subtype)],l),true));break}let f=ae(l.result??l.text??l.error);f&&(r=true,s=f,g.push(Re(e,f)));break}case "error":{g.push(ar(e,D([ae(l.message),ae(l.error)],l),false));break}default:if(m&&!Bl.has(m))return null}if(g.length>0&&m!=="reasoning"&&m!=="thinking_text_delta"&&(a=void 0),g.length===0)return null;let h=ge(l.timestamp);return g.map(f=>({...f,...h!==void 0?{timestamp:h}:{},...n!==void 0?{model:n}:{}}))}}function ii(t,e,n){let r=lr(t,"id")||lr(t,"messageId"),s=lr(t,"blockIndex"),a=`${C(t,"type")}:${r}:${s}:${e}`;return a===n?null:{signature:a,event:{sessionUpdate:"agent_thought_chunk",content:{type:"text",text:e}}}}function Nl(t){if(t.type!=="response")return {handled:false};let e=U(t.result),n=U(t.error),r=ai(e??t);if(n)return {handled:true,sessionId:r,errorText:ae(n.message??n)};let s=e?C(e,"finalText")||C(e,"result"):"";return {handled:true,sessionId:r,resultText:s}}function jl(t){return t.method!=="droid.session_notification"?null:U(U(t.params)?.notification)}function Jl(t,e){let n=U(t.message);if(!n)return [];let r=[],s=n.content;if(Array.isArray(s))for(let a of s){let d=U(a);if(d&&d.type==="tool_use"){let u=oi(d,e);u&&r.push(u);}}if(n.role==="assistant"){let a=cr(s);a&&r.push({sessionUpdate:"agent_message_chunk",content:{type:"text",text:a}});}return r}function oi(t,e){let n=C(t,"id")||C(t,"toolUseId")||C(t,"tool_use_id"),r=C(t,"name")||C(t,"toolName")||C(t,"tool_name")||"Tool";if(!n)return null;e.set(n,r);let s=U(t.input)??U(t.toolInput)??U(t.arguments)??U(t.parameters)??{};if(ci(r)==="todowrite"){let i=Gl(s);if(i)return i}let{title:a,kind:d,content:u,locations:c}=ql(r,s);return {sessionUpdate:"tool_call",toolCallId:n,title:a,toolName:r,kind:d,status:"pending",rawInput:s,content:u,locations:c}}function Kl(t,e){let n=C(t,"toolUseId")||C(t,"tool_use_id")||C(t,"tool_id")||C(t,"id")||C(t,"toolId");if(!n)return null;let r=C(t,"toolName")||C(t,"tool_name")||e.get(n);return e.delete(n),{sessionUpdate:"tool_call_update",toolCallId:n,status:t.isError===true||t.is_error===true?"failed":"completed",title:r,content:dr(t.content??t.result??t.value??t.error)}}function Vl(t){let e=C(t,"toolUseId")||C(t,"tool_use_id")||C(t,"tool_id")||C(t,"id")||C(t,"toolId");if(!e)return null;let n=U(t.update),r=ae(t.content??n?.text??n?.status??n?.details);return {sessionUpdate:"tool_call_update",toolCallId:e,status:"in_progress",content:r?dr(r):void 0}}function Gl(t){let e=t.todos;if(!Array.isArray(e))return null;let n=e.flatMap(r=>{let s=U(r);if(!s)return [];let a=C(s,"content"),d=zl(C(s,"status")),u=Hl(C(s,"priority"));return a?[{content:a,status:d,priority:u}]:[]});return n.length>0?{sessionUpdate:"plan",entries:n}:null}function ql(t,e){let n=Fl[ci(t)]||"other",r=C(e,"path")||C(e,"filePath")||C(e,"file_path")||C(e,"absolute_path"),s=C(e,"command"),a=C(e,"url"),d=r||s||a;return {title:d?`${t} ${d}`:t,kind:n,content:Object.keys(e).length>0?dr(e):[],locations:r?[{path:r}]:[]}}function ai(t){if(t)return C(t,"session_id")||C(t,"sessionId")}function Re(t,e){return {sessionId:t,update:{sessionUpdate:"agent_message_chunk",content:{type:"text",text:e}}}}function ar(t,e,n){return {sessionId:t,update:{sessionUpdate:"error",message:e,fatal:n}}}function cr(t){return typeof t=="string"?t:Array.isArray(t)?t.map(e=>{let n=U(e);return n?C(n,"text")||C(n,"content"):""}).filter(Boolean).join(""):""}function dr(t){let e=ae(t);return e?[{type:"content",content:{type:"text",text:e}}]:[]}function ae(t){if(typeof t=="string")return t;if(t==null)return "";try{return JSON.stringify(t)}catch{return String(t)}}function li(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function U(t){return li(t)?t:null}function C(t,e){let n=t[e];return typeof n=="string"?n:""}function lr(t,e){let n=t[e];return typeof n=="string"||typeof n=="number"||typeof n=="boolean"?String(n):""}function ci(t){return t.replace(/[-_\s]/g,"").toLowerCase()}function zl(t){return t==="in_progress"||t==="completed"?t:"pending"}function Hl(t){return t==="high"||t==="low"?t:"medium"}var Wl={read_file:"read",read_many_files:"read",write_file:"edit",replace:"edit",edit_file:"edit",run_shell_command:"execute",shell:"execute",glob:"search",grep:"search",search_file_content:"search",list_directory:"search",brave_web_search:"fetch",web_search:"fetch",google_web_search:"fetch",web_fetch:"fetch",delegate_to_agent:"think",write_todos:"other",save_memory:"other",activate_skill:"other"};function Qt(){let t,e;return function(i){let o;try{o=JSON.parse(i);}catch{return null}if(o._meta||o._prompt)return null;let l=(typeof o.session_id=="string"&&o.session_id?o.session_id:void 0)??e,p=[];switch(o.type){case "init":return typeof o.model=="string"&&o.model&&(t=o.model),typeof o.session_id=="string"&&o.session_id&&(e=o.session_id),null;case "result":{let m=n(o.stats);if(m&&p.push({sessionId:l,update:{sessionUpdate:"usage",scope:"run",usage:m}}),o.status!=="error")break;p.push({sessionId:l,update:{sessionUpdate:"error",message:D([o.error?.message,o.error?.type,'gemini ended the run with result status "error" and no error text'],o.error??o),fatal:true}});break}case "message":{let m=r(o);m&&p.push({sessionId:l,update:m});break}case "tool_use":{let m=s(o);m&&p.push({sessionId:l,update:m});break}case "tool_result":{let m=a(o);m&&p.push({sessionId:l,update:m});break}case "error":{let m=d(o);m&&p.push({sessionId:l,update:m});break}default:return null}if(p.length===0)return null;let g=ge(o.timestamp);return p.map(m=>({...m,...g!==void 0?{timestamp:g}:{},...t!==void 0?{model:t}:{}}))};function n(c){if(!c||typeof c!="object"||Array.isArray(c))return null;let i=c,o=f=>typeof f=="number"&&Number.isFinite(f)?f:void 0,l={},p=o(i.input_tokens),g=o(i.output_tokens),m=o(i.cached);p!==void 0&&(l.promptTokens=p),g!==void 0&&(l.completionTokens=g),m!==void 0&&(l.cachedTokens=m);let h={};for(let[f,y]of Object.entries(i))f==="input_tokens"||f==="output_tokens"||f==="cached"||y!=null&&(h[f]=y);return Object.keys(h).length>0&&(l.extra=h),l}function r(c){let i=c.role,o=c.content;return o?i==="assistant"?{sessionUpdate:"agent_message_chunk",content:{type:"text",text:o}}:i==="user"?{sessionUpdate:"user_message_chunk",content:{type:"text",text:o}}:null:null}function s(c){let i=c.tool_id,o=c.tool_name,l=c.parameters||{},{title:p,kind:g,content:m,locations:h}=u(o,l);return {sessionUpdate:"tool_call",toolCallId:i,title:p,toolName:o,kind:g,status:"pending",rawInput:l,content:m,locations:h}}function a(c){let i=c.tool_id,o=c.status,l=c.output,p=c.error,g=[];return l&&typeof l=="string"&&l.length>0&&g.push({type:"content",content:{type:"text",text:l}}),p?.message&&!l&&g.push({type:"content",content:{type:"text",text:p.message}}),{sessionUpdate:"tool_call_update",toolCallId:i,status:o==="success"?"completed":"failed",content:g}}function d(c){return {sessionUpdate:"error",message:D([c.message],c),fatal:false}}function u(c,i){let o=Wl[c]||"other",l=[],p=[],g=c;switch(c){case "read_file":g=`Read ${i.absolute_path||i.file_path||"file"}`,(i.absolute_path||i.file_path)&&p.push({path:i.absolute_path||i.file_path});break;case "write_file":g=`Write ${i.file_path||"file"}`,i.file_path&&(p.push({path:i.file_path}),l.push({type:"diff",path:i.file_path,oldText:null,newText:i.content||""}));break;case "edit_file":g=`Edit ${i.file_path||"file"}`,i.file_path&&p.push({path:i.file_path});break;case "replace":g=`Edit ${i.file_path||"file"}`,i.file_path&&(p.push({path:i.file_path}),(i.old_string!==void 0||i.new_string!==void 0)&&l.push({type:"diff",path:i.file_path,oldText:i.old_string||"",newText:i.new_string||""}));break;case "run_shell_command":case "shell":g=i.command?`\`${i.command}\``:"Run command",i.description&&l.push({type:"content",content:{type:"text",text:i.description}});break;case "brave_web_search":case "web_search":case "google_web_search":g=i.query?`"${i.query}"`:"Web search";break;case "web_fetch":g=i.prompt?`Fetch: ${i.prompt.substring(0,50)}...`:"Web fetch";break;case "glob":g=`Find ${i.pattern||"files"}`,i.dir_path&&p.push({path:i.dir_path});break;case "grep":case "search_file_content":g=`grep "${i.pattern||i.query||""}"`;break;case "list_directory":g=`List ${i.dir_path||i.path||"directory"}`,(i.dir_path||i.path)&&p.push({path:i.dir_path||i.path});break;case "read_many_files":g=`Read ${i.include?.length||"multiple"} files`,Array.isArray(i.include)&&i.include.forEach(m=>p.push({path:m}));break;case "delegate_to_agent":g=i.agent_name?`Agent: ${i.agent_name}`:"Delegate to agent";break;case "write_todos":g="Update todos";break;case "save_memory":g=i.fact?`Remember: "${i.fact.substring(0,40)}..."`:"Save memory";break;case "activate_skill":g=i.name?`Activate skill: ${i.name}`:"Activate skill";break;default:g=c;}return {title:g,kind:o,content:l,locations:p}}}var Yl={Read:"read",ReadFile:"read",ReadMediaFile:"read",Write:"edit",WriteFile:"edit",Edit:"edit",StrReplaceFile:"edit",Bash:"execute",Shell:"execute",Glob:"search",Grep:"search",WebSearch:"fetch",SearchWeb:"fetch",FetchURL:"fetch",Agent:"think",AgentSwarm:"think",Task:"think",Think:"think",CreateSubagent:"think",TodoList:"other",SetTodoList:"other"};function di(t){return t==="TodoList"||t==="SetTodoList"}function pr(t){return /<system>\s*ERROR:/i.test(t)||t.includes("<error>")||t.includes("ToolError")}function pi(t){let e=/^data:([^;,]+)((?:;[^,]*)*),(.+)$/i.exec(t);if(!e)return null;let n=e[1]||"",r=e[2]||"",s=e[3]||"";return /;base64/i.test(r)?{mimeType:n,data:s}:null}function gr(t){if(!t||typeof t!="object")return null;if(t.type==="text"&&typeof t.text=="string"&&t.text.length>0)return {type:"content",content:{type:"text",text:t.text}};if(t.type==="image_url"&&typeof t.image_url?.url=="string"){let e=t.image_url.url,n=pi(e);return n?{type:"content",content:{type:"image",data:n.data,mimeType:n.mimeType}}:{type:"content",content:{type:"image",data:"",mimeType:"",uri:e}}}return t.type==="video_url"&&typeof t.video_url?.url=="string"?{type:"content",content:{type:"text",text:`[video] ${t.video_url.url}`}}:t.type==="audio_url"&&typeof t.audio_url?.url=="string"?{type:"content",content:{type:"text",text:`[audio] ${t.audio_url.url}`}}:null}function ur(t){let e=[];if(typeof t=="string")return t.length>0&&e.push({type:"content",content:{type:"text",text:t}}),e;if(Array.isArray(t)){for(let n of t){if(typeof n=="string"&&n.length>0){e.push({type:"content",content:{type:"text",text:n}});continue}let r=gr(n);r&&e.push(r);}return e}if(t&&typeof t=="object"){let n=gr(t);n&&e.push(n);}return e}function Xl(t){return t.some(e=>e.type==="content"&&e.content.type==="text"&&pr(e.content.text))}function Ql(t){if(!t||typeof t!="object")return null;if(t.type==="think"&&typeof t.think=="string"&&t.think.length>0)return {update:{sessionUpdate:"agent_thought_chunk",content:{type:"text",text:t.think}}};if(t.type==="text"&&typeof t.text=="string"&&t.text.length>0)return {update:{sessionUpdate:"agent_message_chunk",content:{type:"text",text:t.text}}};if(t.type==="image_url"&&typeof t.image_url?.url=="string"){let e=t.image_url.url,n=pi(e);return n?{update:{sessionUpdate:"agent_message_chunk",content:{type:"image",data:n.data,mimeType:n.mimeType}}}:{update:{sessionUpdate:"agent_message_chunk",content:{type:"image",data:"",mimeType:"",uri:e}}}}return t.type==="video_url"&&typeof t.video_url?.url=="string"?{update:{sessionUpdate:"agent_message_chunk",content:{type:"text",text:`[video] ${t.video_url.url}`}}}:t.type==="audio_url"&&typeof t.audio_url?.url=="string"?{update:{sessionUpdate:"agent_message_chunk",content:{type:"text",text:`[audio] ${t.audio_url.url}`}}}:null}function Zl(t){return t==="in_progress"?"in_progress":t==="done"||t==="completed"?"completed":"pending"}function ui(t){if(!t||typeof t!="object")return [];let e=t.todos;return Array.isArray(e)?e.map(n=>{if(!n||typeof n!="object")return null;let r=n.title;if(typeof r!="string"||r.length===0)return null;let s=n.status;return {content:r,status:Zl(s),priority:"medium"}}).filter(n=>n!==null):[]}function mr(){let t=new Set,e=0;function n(u,c){return typeof u=="string"&&u.length>0?u:(e+=1,`kimi_${c.replace(/[^a-zA-Z0-9_]/g,"_")||"tool"}_${e}`)}return function(c){let i;try{i=JSON.parse(c);}catch{return null}if(!i||typeof i!="object")return null;let o=i.role;return "_meta"in i||"_prompt"in i?null:o==="meta"?i.type!=="turn.step.retrying"?null:[{update:{sessionUpdate:"error",message:D([i.error_message,i.error_name],i),fatal:false}}]:o==="assistant"?r(i):o==="tool"?s(i):typeof i.type=="string"&&"payload"in i?a(i):null};function r(u){let c=[],i=u.content,o=u.tool_calls;if(typeof i=="string"&&i.length>0)c.push({update:{sessionUpdate:"agent_message_chunk",content:{type:"text",text:i}}});else if(Array.isArray(i))for(let l of i){let p=Ql(l);p&&c.push(p);}if(Array.isArray(o))for(let l of o){if(!l||typeof l!="object")continue;let p=l.function;if(!p)continue;let g=p.name??"",m=n(l.id,g),h;try{h=p.arguments?JSON.parse(p.arguments):{};}catch{h=p.arguments;}if(di(g)){let w=ui(h);w.length>0&&c.push({update:{sessionUpdate:"plan",entries:w}}),t.add(m);continue}let{title:f,kind:y,toolContent:b,locations:_}=d(g,typeof h=="object"&&h!==null?h:{});c.push({update:{sessionUpdate:"tool_call",toolCallId:m,title:f,toolName:g,kind:y,status:"pending",rawInput:h,content:b,locations:_}});}return c.length>0?c:null}function s(u){let c=u.tool_call_id;if(typeof c!="string"||c.length===0)return null;if(t.has(c))return t.delete(c),null;let i=u.content,o=[],l=false;if(typeof i=="string")l=pr(i),i.length>0&&o.push({type:"content",content:{type:"text",text:i}});else if(Array.isArray(i))for(let p of i){let g=gr(p);g&&(g.type==="content"&&g.content.type==="text"&&pr(g.content.text)&&(l=true),o.push(g));}return [{update:{sessionUpdate:"tool_call_update",toolCallId:c,status:l?"failed":"completed",content:o}}]}function a(u){let c=u.type,i=u.payload??{},o=[];switch(c){case "TextPart":{let l=i.text;typeof l=="string"&&l.length>0&&o.push({update:{sessionUpdate:"agent_message_chunk",content:{type:"text",text:l}}});break}case "ThinkPart":{let l=i.think;typeof l=="string"&&l.length>0&&o.push({update:{sessionUpdate:"agent_thought_chunk",content:{type:"text",text:l}}});break}case "ToolCall":{let l=i.function?.name??"",p=n(i.id,l),g=i.function;if(!g)break;let m;try{m=g.arguments?JSON.parse(g.arguments):{};}catch{m=g.arguments;}if(di(l)){let _=ui(m);_.length>0&&o.push({update:{sessionUpdate:"plan",entries:_}}),t.add(p);break}let{title:h,kind:f,toolContent:y,locations:b}=d(l,typeof m=="object"&&m!==null?m:{});o.push({update:{sessionUpdate:"tool_call",toolCallId:p,title:h,toolName:l,kind:f,status:"pending",rawInput:m,content:y,locations:b}});break}case "ToolResult":{let l=i.tool_call_id;if(typeof l!="string"||l.length===0)break;if(t.has(l)){t.delete(l);break}let p=i.return_value??i.content,g=[],m=i.is_error===true;if(p&&typeof p=="object"&&!Array.isArray(p)){let h=p;m=m||h.type==="ToolError"||h.is_error===true,g.push(...ur(h.output)),g.length===0&&typeof h.message=="string"&&h.message.length>0&&g.push({type:"content",content:{type:"text",text:h.message}}),g.length===0&&g.push(...ur(p));}else g.push(...ur(p));m=m||Xl(g),o.push({update:{sessionUpdate:"tool_call_update",toolCallId:l,status:m?"failed":"completed",content:g}});break}default:return null}return o.length>0?o:null}function d(u,c){let i=Yl[u]||"other",o=[],l=[],p=u;switch(u){case "Read":case "ReadFile":{let g=c.path??c.file_path;p=`Read ${g||"file"}`,g&&l.push({path:g});break}case "ReadMediaFile":{let g=c.path??c.file_path;p=`Read media ${g||"file"}`,g&&l.push({path:g});break}case "Write":case "WriteFile":{let g=c.path??c.file_path;p=`Write ${g||"file"}`,g&&(l.push({path:g}),typeof c.content=="string"&&o.push({type:"diff",path:g,oldText:null,newText:c.content}));break}case "Edit":case "StrReplaceFile":{let g=c.path??c.file_path;p=`Edit ${g||"file"}`,g&&l.push({path:g});break}case "Bash":case "Shell":p=c.command?`\`${c.command}\``:"Run command";break;case "Glob":p=`Find ${c.pattern||"files"}`,c.path&&l.push({path:c.path});break;case "Grep":p=`grep "${c.pattern||""}"`,c.path&&l.push({path:c.path});break;case "WebSearch":case "SearchWeb":p=c.query?`"${c.query}"`:"Web search";break;case "FetchURL":p=c.url?`Fetch ${c.url}`:"Web fetch";break;case "Agent":case "AgentSwarm":case "Task":p=c.description||"Subagent task";break;case "Think":p=c.thought||"Thinking";break;case "CreateSubagent":p=c.name?`Subagent: ${c.name}`:"Create subagent";break;case "TodoList":case "SetTodoList":p="Update todos";break;default:p=u;}return {title:p,kind:i,toolContent:o,locations:l}}}var ec={read:"read",write:"edit",edit:"edit",multiedit:"edit",apply_patch:"edit",bash:"execute",glob:"search",grep:"search",list:"search",codesearch:"search",lsp:"search",webfetch:"fetch",websearch:"fetch",task:"think",batch:"think",plan_enter:"switch_mode",plan_exit:"switch_mode",todoread:"other",todowrite:"other",skill:"other",question:"other"};function tc(t){let e=/^data:([^;,]+)?((?:;[^,]+)*),(.*)$/s.exec(t);if(!e)return null;let n=e[1]||"",r=e[2]||"",s=e[3]||"";return /;base64/i.test(r)?{mimeType:n,data:s}:null}function nc(t){if(typeof t!="string")return "pending";switch(t.toLowerCase()){case "in_progress":case "in-progress":case "running":return "in_progress";case "completed":case "done":case "cancelled":return "completed";default:return "pending"}}function rc(t){return t==="high"||t==="medium"||t==="low"?t:"medium"}function gi(t){return Array.isArray(t)?t.map(e=>{if(!e||typeof e!="object")return null;let n=e.content;return typeof n!="string"||n.length===0?null:{content:n,status:nc(e.status),priority:rc(e.priority)}}).filter(e=>e!==null):[]}function sc(t){if(!t||typeof t!="object")return null;let e=t,n=typeof e.mime=="string"?e.mime:"",r=typeof e.url=="string"?e.url:"";if(n.startsWith("image/")){if(r.length>0){let u=tc(r);return u?{type:"content",content:{type:"image",data:u.data,mimeType:u.mimeType||n}}:{type:"content",content:{type:"image",data:"",mimeType:n,uri:r}}}return null}return {type:"content",content:{type:"text",text:`[attachment] ${(typeof e.filename=="string"?e.filename:"")||"attachment"} (${n||"file"})`}}}function ic(t,e){if(t==="error")return typeof e.error=="string"?e.error:null;if(typeof e.output=="string")return e.output;if(e.output===void 0||e.output===null)return null;try{return JSON.stringify(e.output)}catch{return String(e.output)}}function oc(t,e){return t==="error"?"failed":t==="running"?"in_progress":t==="pending"?"pending":typeof e=="number"&&e!==0?"failed":"completed"}function fr(){return function(c){let i;try{i=JSON.parse(c);}catch{return null}if(!i||typeof i!="object")return null;let o=i.sessionID,l=[];switch(i.type){case "step_start":return null;case "step_finish":{let g=t(i.part);if(!g)return null;l.push({sessionUpdate:"usage",scope:"call",usage:g});break}case "user":{let g=e(i);g&&l.push(g);break}case "text":{let g=n(i);g&&l.push(g);break}case "reasoning":{let g=r(i);g&&l.push(g);break}case "tool_use":{l.push(...s(i));break}case "error":{let g=a(i);g&&l.push(g);break}default:return null}if(l.length===0)return null;let p=ge(i.timestamp);return l.map(g=>({sessionId:o,update:g,...p!==void 0?{timestamp:p}:{}}))};function t(u){if(!u||typeof u!="object")return null;let c=u.tokens;if(!c||typeof c!="object")return null;let i=c,o=typeof i.cache=="object"&&i.cache?i.cache:{},l=w=>typeof w=="number"&&Number.isFinite(w)?w:void 0,p=l(i.input),g=l(i.output),m=l(o.read),h=l(o.write),f=l(i.reasoning),y=l(u.cost),b={};(p!==void 0||m!==void 0)&&(b.promptTokens=(p??0)+(m??0)),g!==void 0&&(b.completionTokens=g),m!==void 0&&(b.cachedTokens=m),y!==void 0&&y>0&&(b.costUsd=y);let _={};return f&&(_.reasoning_tokens=f),h&&(_.cache_write_tokens=h),Object.keys(_).length>0&&(b.extra=_),b}function e(u){let i=(Array.isArray(u.parts)?u.parts:[]).filter(o=>o&&typeof o=="object"&&o.type==="text"&&typeof o.text=="string"&&o.text).map(o=>o.text).join(`
19
- `);return i.length===0?null:{sessionUpdate:"user_message_chunk",content:{type:"text",text:i}}}function n(u){let c=u.part?.text;return typeof c!="string"||c.length===0?null:{sessionUpdate:"agent_message_chunk",content:{type:"text",text:c}}}function r(u){let c=u.part?.text;return typeof c!="string"||c.length===0?null:{sessionUpdate:"agent_thought_chunk",content:{type:"text",text:c}}}function s(u){let c=u.part;if(!c)return [];let i=typeof c.callID=="string"?c.callID:"";if(i.length===0)return [];let o=typeof c.tool=="string"?c.tool:"",l=o.toLowerCase(),p=typeof c.state=="object"&&c.state?c.state:{},g=typeof p.input=="object"&&p.input?p.input:{},m=p.status,h=p.title??p.metadata?.description??l,f=p.metadata?.exit,{kind:y,content:b,locations:_}=d(l,g),w=[];if(w.push({sessionUpdate:"tool_call",toolCallId:i,title:h,toolName:o,kind:y,status:"pending",rawInput:g,content:b,locations:_}),l==="todowrite"){let R=gi(g.todos);if(R.length===0&&typeof p.output=="string")try{R=gi(JSON.parse(p.output));}catch{}R.length>0&&w.push({sessionUpdate:"plan",entries:R});}let S=oc(m,f);if(S==="pending")return w;let v=ic(m,p),x=[];if(typeof v=="string"&&v.length>0&&x.push({type:"content",content:{type:"text",text:v}}),Array.isArray(p.attachments))for(let R of p.attachments){let I=sc(R);I&&x.push(I);}return w.push({sessionUpdate:"tool_call_update",toolCallId:i,status:S,content:x,rawOutput:p}),w}function a(u){return {sessionUpdate:"error",message:D([u.error?.data?.message,u.error?.message,u.error?.name],u.error??u),fatal:false}}function d(u,c){let i=ec[u]||"other",o=[],l=[];switch(u){case "read":{let p=c.filePath??c.path;if(p){let g=c.offset;l.push({path:p,line:typeof g=="number"&&Number.isFinite(g)?Math.max(0,g-1):void 0});}break}case "write":{let p=c.filePath??c.path;p&&(l.push({path:p}),typeof c.content=="string"&&o.push({type:"diff",path:p,oldText:null,newText:c.content}));break}case "edit":case "multiedit":{let p=c.filePath??c.path;p&&(l.push({path:p}),u==="edit"&&(c.oldString!==void 0||c.newString!==void 0)&&o.push({type:"diff",path:p,oldText:c.oldString??"",newText:c.newString??""}));break}case "apply_patch":break;case "bash":{let p=c.command;p&&c.description?o.push({type:"content",content:{type:"text",text:c.description}}):p&&o.push({type:"content",content:{type:"text",text:p}});break}case "glob":case "list":{let p=c.path;p&&l.push({path:p});break}case "grep":{let p=c.path;p&&l.push({path:p});break}case "codesearch":case "websearch":{let p=c.query;p&&o.push({type:"content",content:{type:"text",text:p}});break}case "webfetch":{let p=c.url;p&&o.push({type:"content",content:{type:"text",text:p}});break}case "task":{let p=c.description;p&&o.push({type:"content",content:{type:"text",text:p}});break}}return {kind:i,content:o,locations:l}}}var ac={Read:"read",read_file:"read",Write:"edit",Edit:"edit",write_file:"edit",edit_file:"edit",Bash:"execute",BashOutput:"execute",KillShell:"execute",shell:"execute",run_shell_command:"execute",WebFetch:"fetch",WebSearch:"fetch",brave_web_search:"fetch",Glob:"search",Grep:"search",LS:"search",list_directory:"search",Task:"think",TodoWrite:"other",ExitPlanMode:"switch_mode"};function Zt(){let t=new Map,e=new Map;return function(l){let p;try{p=JSON.parse(l);}catch{return null}if(!p||typeof p!="object")return null;let g=p;if("_meta"in g||"_prompt"in g)return null;let m=g.session_id||void 0,h=[];switch(g.type){case "assistant":{let v=g;h.push(...r(v));let x=n(v.message?.usage);x&&h.push({sessionUpdate:"usage",scope:"call",usage:x});break}case "stream_event":{h.push(...s(g));break}case "user":{h.push(...a(g));break}case "system":return null;case "result":{let v=n(g.usage);if(v&&h.push({sessionUpdate:"usage",scope:"run",usage:v}),g.is_error!==true)break;let x=g.error;h.push({sessionUpdate:"error",message:D([x?.message,g.subtype],g.error??g),fatal:true});break}default:return null}if(h.length===0)return null;let f=g.message,y=typeof f?.model=="string"&&f.model?f.model:void 0,b=typeof f?.id=="string"&&f.id?f.id:void 0,_=typeof g.parent_tool_use_id=="string"&&g.parent_tool_use_id?g.parent_tool_use_id:void 0,w=f?.stop_reason,S=w!=null?{stop_reason:w}:void 0;return h.map(v=>({sessionId:m,update:v,...y!==void 0?{model:y}:{},...b!==void 0?{messageId:b}:{},..._!==void 0?{parentToolCallId:_}:{},...S!==void 0?{extra:S}:{}}))};function n(o){if(!o||typeof o!="object"||Array.isArray(o))return null;let l=o,p=b=>typeof b=="number"&&Number.isFinite(b)?b:void 0,g={},m=p(l.input_tokens),h=p(l.output_tokens),f=p(l.cache_read_input_tokens);m!==void 0&&(g.promptTokens=m),h!==void 0&&(g.completionTokens=h),f!==void 0&&(g.cachedTokens=f);let y={};for(let[b,_]of Object.entries(l))b==="input_tokens"||b==="output_tokens"||b==="cache_read_input_tokens"||_!=null&&(y[b]=_);return Object.keys(y).length>0&&(g.extra=y),g}function r(o){let l=[],p=o.message?.content;if(!Array.isArray(p))return l;for(let g of p){let m=d(g);l.push(...m);}return l}function s(o){let l=[],p=o.event;if(!p)return l;switch(p.type){case "content_block_start":{let g=p.index??0,m=p.content_block;m&&(t.set(g,m),m.type==="tool_use"&&e.set(g,""));break}case "content_block_delta":{let g=p.index??0,m=p.delta,h=t.get(g);if(m?.type==="text_delta"&&m.text)l.push({sessionUpdate:"agent_message_chunk",content:{type:"text",text:m.text}});else if(m?.type==="thinking_delta"&&m.thinking)l.push({sessionUpdate:"agent_thought_chunk",content:{type:"text",text:m.thinking}});else if(m?.type==="input_json_delta"&&m.partial_json&&h?.type==="tool_use"){let f=e.get(g)||"";e.set(g,f+m.partial_json);}break}case "content_block_stop":{let g=p.index??0,m=t.get(g);if(m&&!(m.type==="text"&&m.text)){if(!(m.type==="thinking"&&m.thinking)){if(m.type==="tool_use"){let h=m,f=e.get(g)||"";e.delete(g);let y=h.input;if(f)try{y=JSON.parse(f);}catch{}let b={...h,input:y},_=u(b);_&&l.push(_);}else if(m.type==="tool_result"){let h=c(m);h&&l.push(h);}}}t.delete(g);break}}return l}function a(o){let l=o.message?.content,p=[];if(typeof l=="string")return p.push({sessionUpdate:"user_message_chunk",content:{type:"text",text:l}}),p;if(Array.isArray(l)){for(let g of l)if(g.type==="text")p.push({sessionUpdate:"user_message_chunk",content:{type:"text",text:g.text}});else if(g.type==="tool_result"){let m=c(g);m&&p.push(m);}}return p}function d(o){switch(o.type){case "text":return o.text?[{sessionUpdate:"agent_message_chunk",content:{type:"text",text:o.text}}]:[];case "thinking":return o.thinking?[{sessionUpdate:"agent_thought_chunk",content:{type:"text",text:o.thinking}}]:[];case "tool_use":{let l=u(o);return l?[l]:[]}case "tool_result":{let l=c(o);return l?[l]:[]}}}function u(o){let l=o.id,p=o.name,g=o.input;if(p==="TodoWrite"&&Array.isArray(g?.todos))return {sessionUpdate:"plan",entries:g.todos.map(b=>({content:b.content,status:b.status||"pending",priority:"medium"}))};let{title:m,kind:h,content:f,locations:y}=i(p,g||{});return {sessionUpdate:"tool_call",toolCallId:l,title:m,toolName:p,kind:h,status:"pending",rawInput:g,content:f,locations:y}}function c(o){let l=o.tool_use_id,p=o.is_error??false,g=o.content,m=[];if(typeof g=="string"&&g.length>0)m.push({type:"content",content:{type:"text",text:g}});else if(Array.isArray(g))for(let h of g)h.type==="text"&&m.push({type:"content",content:{type:"text",text:h.text}});return {sessionUpdate:"tool_call_update",toolCallId:l,status:p?"failed":"completed",content:m}}function i(o,l){let p=ac[o]||"other",g=[],m=[],h=o;switch(o){case "Read":case "read_file":h=`Read ${l.file_path||l.absolute_path||"file"}`,(l.file_path||l.absolute_path)&&m.push({path:l.file_path||l.absolute_path});break;case "Write":case "write_file":h=`Write ${l.file_path||"file"}`,l.file_path&&(m.push({path:l.file_path}),g.push({type:"diff",path:l.file_path,oldText:null,newText:l.content||""}));break;case "Edit":case "edit_file":h=`Edit ${l.file_path||"file"}`,l.file_path&&m.push({path:l.file_path});break;case "Bash":case "shell":case "run_shell_command":h=l.command?`\`${l.command}\``:"Run command",l.description&&g.push({type:"content",content:{type:"text",text:l.description}});break;case "WebFetch":h=l.url?`Fetch ${l.url}`:"Web fetch";break;case "WebSearch":case "brave_web_search":h=l.query?`"${l.query}"`:"Web search";break;case "Glob":h=`Find ${l.pattern||"files"}`,l.path&&m.push({path:l.path});break;case "Grep":h=`grep "${l.pattern||""}"`;break;case "LS":case "list_directory":h=`List ${l.path||"directory"}`,l.path&&m.push({path:l.path});break;case "Task":h=l.description||"Subagent task";break;case "TodoWrite":h="Update todos";break;case "ExitPlanMode":h="Exit plan mode";break;default:h=o;}return {title:h,kind:p,content:g,locations:m}}}function mi(t){return Zt()(t)}function ye(t){switch(t){case "claude":return Wt();case "codex":return Yt();case "gemini":return Qt();case "qwen":return Zt();case "kimi":return mr();case "opencode":return fr();case "droid":return Xt();default:return ()=>null}}function lc(t,e){let n=e.trim();return n?ye(t)(n):null}function cc(t,e){let n=[],r=e.split(`
20
- `),s=ye(t);for(let a of r){let d=a.trim();if(!d)continue;let u=s(d);u&&n.push(...u);}return n}var jc=util.promisify(child_process.execFile),ce="SKILL.md",Jc=Z.join(os$1.homedir(),".cache","evolve","skills"),Rr=["skills","skills/.curated","skills/.experimental","skills/.system",".claude/skills"],Kc=/^([A-Za-z0-9._-]+)\/([A-Za-z0-9._-]+)(?:@(.+))?$/,Vc=/^[0-9a-f]{40}$/,vr=2e3,Sr=64*1024*1024,W=class extends Error{constructor(e){super(e),this.name="SkillRefError";}},j=class extends Error{constructor(e){super(e),this.name="SkillResolveError";}};function Gc(t){return t==="~"?os$1.homedir():t.startsWith("~/")?Z.join(os$1.homedir(),t.slice(2)):t}function qc(t){let e=t.indexOf("@");if(e===-1)return {base:t};let n=t.slice(e+1);if(!n)throw new W(`Empty @ref in skill reference segment: ${JSON.stringify(t)}`);return {base:t.slice(0,e),gitRef:n}}var zc=/^[A-Za-z0-9._-]+$/;function nn(t,e,n){if(!zc.test(t))throw new W(`Cannot parse skill reference ${JSON.stringify(n)}: ${e} ${JSON.stringify(t)} may only contain letters, digits, ".", "_" and "-".`);return t}function Er(t){let e=String(t??"").trim();if(!e)throw new W("Skill reference cannot be empty.");if(e.startsWith("upload:")){let a=e.slice(7);if(!a)throw new W(`Skill upload reference ${JSON.stringify(e)} names no upload id.`);return {kind:"upload",id:a,raw:e}}if(e.startsWith("name:")){let a=e.slice(5);if(!a)throw new W(`Skill name reference ${JSON.stringify(e)} names no skill.`);return nn(a,"skill name",e),{kind:"name",name:a,raw:e}}if(e.startsWith("./")||e.startsWith("../")||e.startsWith("/")||e.startsWith("~"))return {kind:"local",path:Gc(e),raw:e};let n=e.match(/^(?:https?:\/\/)?(?:www\.)?skills\.sh\/(.+)$/);if(n){let d=n[1].replace(/\/+$/,"").split("/").filter(Boolean);if(d.length<2||d.length>3)throw new W(`Cannot parse skill reference ${JSON.stringify(e)}: expected skills.sh/<owner>/<repo> or skills.sh/<owner>/<repo>/<skill>, optionally @ref.`);let{base:u,gitRef:c}=qc(d[d.length-1]);d[d.length-1]=u;let[i,o,l]=d;return nn(i,"owner",e),nn(o,"repo",e),l!==void 0&&nn(l,"skill name",e),{kind:"git",host:"github.com",org:i,repo:o,...c?{gitRef:c}:{},...l?{skillName:l}:{},viaSkillsSh:true,raw:e}}let r=e.match(/^https?:\/\/([^/]+)\/(.+)$/);if(r){let a=r[1],d=r[2].replace(/\/+$/,"").split("/").filter(Boolean);if(d.length<2)throw new W(`Git URL must have at least org/name in the path: ${JSON.stringify(e)}`);let u=d[0],c=d[1].replace(/\.git$/,""),i,o;return d.length>=4&&d[2]==="tree"&&(i=d[3],d.length>4&&(o=d.slice(4).join("/"))),{kind:"git",host:a,org:u,repo:c,...i?{gitRef:i}:{},...o?{subdir:o}:{},viaSkillsSh:false,raw:e}}let s=e.match(Kc);if(s)return {kind:"git",host:"github.com",org:s[1],repo:s[2],...s[3]?{gitRef:s[3]}:{},viaSkillsSh:false,raw:e};throw new W(`Cannot parse skill reference ${JSON.stringify(e)}. Expected skills.sh/<owner>/<repo>[/<skill>], org/repo[@ref], an https git URL, or a local folder path (prefix relative paths with './').`)}function Tr(t){return `https://${t.host}/${t.org}/${t.repo}.git`}function Te(t){return `https://${t.host}/${t.org}/${t.repo}`}async function le(t,e){try{let{stdout:n}=await jc("git",t,{cwd:e.cwd,timeout:e.timeoutMs,env:e.gitEnv??process.env,maxBuffer:16777216});return n}catch(n){let r=n,s=(r.stderr||r.message||"").trim();throw new j(`git ${t[0]} failed${r.killed?" (timed out)":""}: ${s}`)}}async function Pr(t,e={}){if(t.gitRef&&Vc.test(t.gitRef))return t.gitRef;let n=t.gitRef??"HEAD",s=(await le(["ls-remote",Tr(t),n,`${n}^{}`],{timeoutMs:e.lsRemoteTimeoutMs??3e4,gitEnv:e.gitEnv})).trim().split(`
21
- `).filter(u=>u.length>0).map(u=>{let[c,i]=u.split(" ");return {sha:c,name:i}});if(s.length===0||!s[0].sha)throw new j(`No matching ref ${JSON.stringify(n)} found in ${Te(t)}`);let a=s[0];return (s.find(u=>u.name===`${a.name}^{}`)??a).sha}async function Hc(t,e={}){let n=Er(t);if(n.kind!=="git")return {ref:n.raw};let r=await Pr(n,e),s;return n.viaSkillsSh?s=`skills.sh/${n.org}/${n.repo}${n.skillName?`/${n.skillName}`:""}@${r}`:n.subdir!==void 0||n.raw.includes("://")?s=`https://${n.host}/${n.org}/${n.repo}/tree/${r}${n.subdir?`/${n.subdir}`:""}`:s=`${n.org}/${n.repo}@${r}`,{ref:s,gitUrl:Te(n),gitCommit:r}}async function xr(t){let e=[],n=async s=>{let a=s===""?t:Z.join(t,s),d=await promises.readdir(a,{withFileTypes:true});for(let u of d){let c=s===""?u.name:`${s}/${u.name}`;u.isDirectory()?await n(c):u.isFile()&&e.push(c);}};await n(""),e.sort();let r=crypto.createHash("sha256");for(let s of e){let a=crypto.createHash("sha256").update(await promises.readFile(Z.join(t,s))).digest("hex");r.update(s),r.update("\0"),r.update(a),r.update("\0");}return `sha256:${r.digest("hex")}`}async function st(t){try{return (await promises.stat(t)).isFile()}catch{return false}}async function Ar(t){try{return (await promises.stat(t)).isDirectory()}catch{return false}}async function Ti(t,e){if(!await Ar(t))throw new j(`Skill path does not exist or is not a directory: ${e}`);if(await st(Z.join(t,ce)))return [t];let r=(await promises.readdir(t,{withFileTypes:true})).filter(d=>d.isDirectory()&&!d.name.startsWith(".")).map(d=>d.name).sort(),s=[],a=[];for(let d of r)await st(Z.join(t,d,ce))?a.push(Z.join(t,d)):s.push(d);if(s.length>0)throw new j(`Skill root ${e} contains child directories without ${ce}: ${s.join(", ")}`);if(a.length===0)throw new j(`Skill path ${e} must be a skill directory containing ${ce}, or a root whose immediate child directories each contain ${ce}.`);return a}async function Wc(t){let e=new Map;await st(Z.join(t,ce))&&e.set(Z.basename(t),t);for(let n of Rr){let r=Z.join(t,n);if(!await Ar(r))continue;let s=await promises.readdir(r,{withFileTypes:true});for(let a of s.sort((d,u)=>d.name<u.name?-1:1)){if(!a.isDirectory()||a.name.startsWith("."))continue;let d=Z.join(r,a.name);await st(Z.join(d,ce))&&e.set(a.name,d);}}return Array.from(e,([n,r])=>({dir:r,name:n}))}function Yc(t){return t.cacheDir??process.env.EVOLVE_SKILLS_CACHE??Jc}async function Xc(t,e,n){let r=Z.join(Yc(n),t.host,t.org,t.repo,e),s=Z.join(r,t.repo),a=Z.join(r,".evolve-complete");if(await st(a)&&await Ar(s))return s;await promises.mkdir(Z.dirname(r),{recursive:true});let d=await promises.mkdtemp(`${r}.tmp-`),u=Z.join(d,t.repo),c=n.checkoutTimeoutMs??12e4,i={cwd:u,timeoutMs:c,gitEnv:n.gitEnv};try{await promises.mkdir(u),await le(["init","--quiet"],i),await le(["remote","add","origin",Tr(t)],i),t.subdir?(await le(["sparse-checkout","init","--cone"],i),await le(["sparse-checkout","set",t.subdir],i)):(await le(["sparse-checkout","init","--cone"],i),await le(["sparse-checkout","set",...Rr],i)),await le(["fetch","--quiet","--depth=1","origin",e],i),await le(["checkout","--quiet","FETCH_HEAD"],i),await promises.rm(Z.join(u,".git"),{recursive:!0,force:!0}),await promises.writeFile(Z.join(d,".evolve-complete"),""),await promises.rm(r,{recursive:!0,force:!0});try{await promises.rename(d,r);}catch{await promises.rm(d,{recursive:!0,force:!0});}return s}catch(o){throw await promises.rm(d,{recursive:true,force:true}),o}}async function Pi(t,e){let n=0,r=0,s=async a=>{let d=await promises.readdir(a,{withFileTypes:true});for(let u of d){let c=Z.join(a,u.name);if(u.isDirectory())await s(c);else if(u.isFile()&&(n+=1,r+=(await promises.stat(c)).size,n>vr||r>Sr))throw new j(`Skill ${e} exceeds the size ceiling (${vr} files / ${Sr} bytes) \u2014 a skill is instructions, not a dataset.`)}};await s(t);}async function Ir(t,e={}){let n=new Map;for(let r of t){let s=Er(r);if(s.kind==="upload")throw new j(`Skill reference ${JSON.stringify(s.raw)} is a platform upload handle; only the hosted platform can resolve it. Use a skills.sh/git reference or a local folder here.`);if(s.kind==="name")throw new j(`Skill reference ${JSON.stringify(s.raw)} is a platform skill name \u2014 a moving pointer only the hosted platform can resolve (server-side, at job create). Use a skills.sh/git reference or a local folder here.`);if(s.kind==="local"){let c=await Ti(s.path,s.raw);for(let i of c)await Pi(i,s.raw),n.set(Z.basename(i),{name:Z.basename(i),dir:i,source:s.raw,digest:await xr(i)});continue}let a=await Pr(s,e),d=await Xc(s,a,e),u;if(s.subdir)u=(await Ti(Z.join(d,s.subdir),`${s.raw} (${s.subdir})`)).map(i=>({dir:i,name:Z.basename(i)}));else if(u=await Wc(d),u.length===0)throw new j(`No skills found in ${Te(s)}@${a.slice(0,12)}: expected ${ce} at the repo root or under ${Rr.join(", ")}.`);if(s.skillName){let c=u.filter(i=>i.name===s.skillName);if(c.length===0)throw new j(`Skill ${JSON.stringify(s.skillName)} not found in ${Te(s)}@${a.slice(0,12)}. Available: ${u.map(i=>i.name).sort().join(", ")||"(none)"}`);u=c;}for(let{dir:c,name:i}of u)await Pi(c,s.raw),n.set(i,{name:i,dir:c,source:s.raw,gitUrl:Te(s),gitCommit:a,digest:await xr(c)});}return Array.from(n.values()).sort((r,s)=>r.name<s.name?-1:r.name>s.name?1:0)}function rn(t){return `'${t.replace(/'/g,"'\\''")}'`}async function Or(t,e,n){if(e.length===0)return;let{tarGzipDirectory:r}=await Promise.resolve().then(()=>(wr(),_r));await t.files.makeDir(n);for(let s of e){let a=await r(s.dir),d=`${n}/.evolve-skill-${s.name}.tgz`,u=`${n}/${s.name}`;await t.files.write(d,a),await t.commands.run(`mkdir -p ${rn(u)} && tar -xzf ${rn(d)} -C ${rn(u)} && rm -f ${rn(d)}`,{timeoutMs:6e4});}}function Q(t){return t!==null&&typeof t=="object"&&"safeParse"in t&&typeof t.safeParse=="function"}function Pe(t){return JSON.stringify(Qc__default.default(t,{target:"jsonSchema7"}),null,2)}function Ae(t){return JSON.stringify(t,null,2)}function Ai(t,e=false){let n={};function r(s,a){for(let d of ee__namespace.readdirSync(s)){let u=Z__namespace.join(s,d),c=a?`${a}/${d}`:d;ee__namespace.statSync(u).isDirectory()?e&&r(u,c):n[c]=ee__namespace.readFileSync(u);}}return r(t,""),n}function Ii(t,e){let n=Z__namespace.resolve(t),r=n.endsWith(Z__namespace.sep)?n:n+Z__namespace.sep;for(let[s,a]of Object.entries(e)){let d=Z__namespace.resolve(n,s);if(!d.startsWith(r))throw new Error(`Unsafe file path escapes target directory: ${s}`);let u=Z__namespace.dirname(d);ee__namespace.mkdirSync(u,{recursive:true});let c;a instanceof ArrayBuffer||a instanceof Uint8Array?c=Buffer.from(a):c=a,ee__namespace.writeFileSync(d,c);}}var P=class extends Error{field;constructor(e,n){super(n),this.name="EvolveConfigError",this.field=e;}};function Mr(t){return typeof t=="string"&&t.trim()!==""}function Ie(t){return t==null?String(t):JSON.stringify(t)}function it(t){if(!t)return;if(t.type!==void 0&&!Yn(t.type))throw new P("type",`Evolve agent config: unknown agent type ${Ie(t.type)}. Valid types: ${Object.keys(K).join(", ")}.`);let e=t.type??qn;if(t.model!==void 0&&!Mr(t.model))throw new P("model",`Evolve agent config: "model" is empty (${Ie(t.model)}). Pass a model id such as "${V(e).defaultModel}", or omit model entirely to use ${e}'s default.`);if(t.config!==void 0){if(!Li(e))throw new P("config",`Evolve agent config: agent "${e}" does not support a native config. Agents with native-config support: ${$i().join(", ")}.`);let n=t.config;if(typeof n=="string"){if(!Mr(n))throw new P("config",`Evolve agent config: "config" is an empty path (${Ie(n)}). Pass a local settings file path or an inline JSON object.`)}else if(!an(n))throw new P("config",`Evolve agent config: "config" must be a local file path or a JSON object, received ${Ie(n)}.`)}t.preset!==void 0&&Dr(e,t.preset);}function Dr(t,e){if(!Jn.includes(e))throw new P("preset",`Evolve agent config: unknown preset ${Ie(e)}. Valid presets: ${Jn.join(", ")}.`);let n=Ui(e);if(!n.includes(t))throw new P("preset",`Evolve agent config: agent "${t}" cannot guarantee preset "${e}". Agents that can: ${n.join(", ")}.`)}function Di(t){let e=K[t]?.presets;return e?Object.keys(e):[]}function Ui(t){return Object.keys(K).filter(e=>Di(e).includes(t))}function ln(t,e){let n={...t};for(let[r,s]of Object.entries(e)){let a=n[r];if(an(a)&&an(s))n[r]=ln(a,s);else if(Array.isArray(a)&&Array.isArray(s)){let d=[...a];for(let u of s)d.some(c=>Oe(c)===Oe(u))||d.push(u);n[r]=d;}else n[r]=s;}return n}function an(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Li(t){return K[t]?.nativeConfig!==void 0}function $i(){return Object.keys(K).filter(Li)}function ed(t,e){if(e===void 0)return;let n=K[t]?.nativeConfig;if(!n)throw new P("config",`Evolve agent config: agent "${t}" does not support a native config. Agents with native-config support: ${$i().join(", ")}.`);let r;if(typeof e=="string"){let s=e.replace(/^~/,process.env.HOME||"");if(!ee__namespace.existsSync(s))throw new P("config",`Agent config file not found: ${s}`);let a=ee__namespace.readFileSync(s,"utf-8");try{r=n.format==="toml"?smolToml.parse(a):JSON.parse(a);}catch(d){throw new P("config",`Invalid ${t} config file ${e}: ${d.message}`)}}else {let s;try{s=JSON.parse(JSON.stringify(e));}catch(a){throw new P("config",`Invalid inline ${t} config: not JSON-serializable: ${a.message}`)}if(JSON.stringify(s)!==JSON.stringify(e))throw new P("config",`Invalid inline ${t} config: expected a JSON object that can be represented without conversion`);r=s;}if(!an(r))throw new P("config",`Invalid ${t} config: expected a ${n.format==="toml"?"TOML table":"JSON object"}.`);if(n.format==="toml"){let s;try{s=smolToml.parse(smolToml.stringify(r));}catch(a){throw new P("config",`Invalid ${t} config for TOML conversion: ${a.message}`)}if(Oe(s)!==Oe(r))throw new P("config",`Invalid ${t} config: the document cannot be represented losslessly as TOML (TOML has no null and no mixed-type arrays)`)}return r}function Oe(t){return Array.isArray(t)?`[${t.map(Oe).join(",")}]`:t&&typeof t=="object"?`{${Object.entries(t).sort(([n],[r])=>n<r?-1:n>r?1:0).map(([n,r])=>`${JSON.stringify(n)}:${Oe(r)}`).join(",")}}`:JSON.stringify(t)??"null"}function Ur(t){if(!t||!Mr(t.prompt))throw new P("prompt",`run() requires a non-empty "prompt" string, received ${Ie(t?.prompt)}.`)}function Lr(t){if(t){for(let e of Qe)if(e in t)throw new P(`observability.${e}`,`Evolve observability metadata: "${e}" is reserved for session identity and would split this run across two dashboard sessions. Reserved keys: ${Qe.join(", ")}. Use a different key, or set the session tag with .withSessionTagPrefix().`)}}function cn(t){if(t.externalGateway){if(t.providerApiKey||t.providerBaseUrl||t.oauthToken)throw new Error("externalGateway cannot be combined with providerApiKey/providerBaseUrl/oauthToken (direct mode)");if(t.apiKey)throw new Error("externalGateway cannot be combined with apiKey (Evolve gateway mode)")}}function td(t){let e=t.replace(/^~/,process.env.HOME||"");if(!ee__namespace.existsSync(e))throw new Error(`OAuth file not found: ${e}`);return ee__namespace.readFileSync(e,"utf-8")}function Mi(t,e,n){if(!e.providerEnvMap||!n)return;let r=n.indexOf("/");if(r<=0)return;let s=n.slice(0,r);if(!(e.providerEnvMap[s]||!Ce(e,n)))throw new P("model",`Model "${n}" is served through the Evolve gateway only: the ${t} agent holds no ${s} key in direct mode. Set ${O} (or apiKey) to run it through the gateway, or pick a model whose route has a direct-mode key (${Object.keys(e.providerEnvMap).join(", ")}).`)}function dn(t){let e=t?.type??qn,n=V(e),r=ed(e,t?.config);t?.preset!==void 0&&Dr(e,t.preset);let s={...r!==void 0?{config:r}:{},...t?.preset!==void 0?{preset:t.preset}:{}};if(t?.externalGateway){cn(t);let{apiKey:c,baseUrl:i,revoke:o}=t.externalGateway;if(!c||!i||typeof o!="function")throw new Error("externalGateway requires apiKey, baseUrl, and a revoke() function");return {type:e,apiKey:c,baseUrl:i,isDirectMode:true,externalGateway:{revoke:o},model:t.model,reasoningEffort:t.reasoningEffort,maxContextSize:t.maxContextSize,...s}}if(t?.oauthToken){if(e!=="claude")throw new Error(`oauthToken is only supported for claude agent (Claude Max subscription), not ${e}. Use providerApiKey for ${e} instead.`);return {type:e,apiKey:t.oauthToken,isDirectMode:true,isOAuth:true,model:t.model,reasoningEffort:t.reasoningEffort,maxContextSize:t.maxContextSize,...s}}if(t?.providerApiKey){Mi(e,n,t.model);let c=n.baseUrlEnv?process.env[n.baseUrlEnv]:void 0,i=t.providerBaseUrl??c??n.defaultBaseUrl;return {type:e,apiKey:t.providerApiKey,baseUrl:i,isDirectMode:true,model:t.model,reasoningEffort:t.reasoningEffort,maxContextSize:t.maxContextSize,...s}}if(t?.apiKey)return {type:e,apiKey:t.apiKey,isDirectMode:false,model:t.model,reasoningEffort:t.reasoningEffort,maxContextSize:t.maxContextSize,...s};let a=process.env[O];if(a)return {type:e,apiKey:a,isDirectMode:false,model:t?.model,reasoningEffort:t?.reasoningEffort,maxContextSize:t?.maxContextSize,...s};if(n.providerEnvMap){let i=(t?.model??n.defaultModel)?.split("/")[0],o=i?n.providerEnvMap[i]:void 0,l=o?process.env[o.keyEnv]:void 0;if(l){let g=(n.baseUrlEnv?process.env[n.baseUrlEnv]:void 0)??n.defaultBaseUrl;return {type:e,apiKey:l,baseUrl:g,isDirectMode:true,model:t?.model,reasoningEffort:t?.reasoningEffort,maxContextSize:t?.maxContextSize,...s}}}let d=process.env[n.apiKeyEnv];if(d){Mi(e,n,t?.model);let i=(n.baseUrlEnv?process.env[n.baseUrlEnv]:void 0)??n.defaultBaseUrl;return {type:e,apiKey:d,baseUrl:i,isDirectMode:true,model:t?.model,reasoningEffort:t?.reasoningEffort,maxContextSize:t?.maxContextSize,...s}}if(n.oauthEnv){let c=process.env[n.oauthEnv];if(c){if(n.oauthFileName){let i=td(c);return {type:e,apiKey:"__oauth_file__",isDirectMode:true,isOAuth:true,oauthFileContent:i,model:t?.model,reasoningEffort:t?.reasoningEffort,maxContextSize:t?.maxContextSize,...s}}return {type:e,apiKey:c,isDirectMode:true,isOAuth:true,model:t?.model,reasoningEffort:t?.reasoningEffort,maxContextSize:t?.maxContextSize,...s}}}let u=n.oauthEnv?n.oauthFileName?`, or ${n.oauthEnv}`:`, oauthToken, or ${n.oauthEnv}`:"";throw new Error(`No API key found for ${e}. Set apiKey (gateway), providerApiKey (direct)${u}, or ${O} / ${n.apiKeyEnv} env var.`)}function sd(t){return `e2b_${Buffer.from(t,"utf8").toString("hex")}`}var Ki=new WeakSet;function Nr(t){return Ki.add(t),t}function De(t){return Ki.has(t)}function ji(t,e){return new Error(`${O} is set but ${t} failed to load.
22
- Try installing: ${e}`)}function Ji(t){return t.message?.includes("Cannot find module")||t.message?.includes("MODULE_NOT_FOUND")}function jr(t,e){if(!e||e.timeoutMs===void 0&&e.resources===void 0)return t;let n=t.create.bind(t);return t.create=(r={})=>n({...e.timeoutMs!==void 0?{timeoutMs:e.timeoutMs}:{},...e.resources!==void 0?{resources:e.resources}:{},...r}),t}async function at(t,e="e2b",n){let r=t||process.env[O];if(!r)throw new Error(`${O} is required for Evolve-managed sandbox features`);if(!xe.includes(e))throw new Error(`Unknown managed sandbox provider "${e}". Supported: ${xe.join(", ")}`);if(e==="daytona")try{let{createDaytonaProvider:s}=await import('@evolvingmachines/daytona');return jr(Nr(s({apiKey:r,apiUrl:Ye("daytona"),managedToolboxUrl:Ks()})),n)}catch(s){let a=s;throw Ji(a)?ji("@evolvingmachines/daytona","npm install @evolvingmachines/daytona"):a}if(e==="modal"){let{ManagedModalProvider:s}=await Promise.resolve().then(()=>(Ni(),Bi));return jr(Nr(new s({apiKey:r,baseUrl:Ye("modal")})),n)}try{let{createE2BProvider:s}=await import('@evolvingmachines/e2b');return jr(Nr(s({apiKey:sd(r),apiUrl:Vn()})),n)}catch(s){let a=s;throw Ji(a)?ji("@evolvingmachines/e2b","npm install @evolvingmachines/evolve"):a}}function id(t="e2b",e){let n=typeof e=="string"?{apiKey:e}:e??{},{apiKey:r,...s}=n;return at(r,t,s)}async function gn(){let t=process.env[Lt];if(t)try{let{createE2BProvider:a}=await import('@evolvingmachines/e2b');return process.env.E2B_API_URL===Vn()&&delete process.env.E2B_API_URL,a({apiKey:t})}catch(a){let d=a;throw d.message?.includes("Cannot find module")||d.message?.includes("MODULE_NOT_FOUND")?new Error(`${Lt} is set but @evolvingmachines/e2b failed to load.
23
- Try reinstalling: npm install @evolvingmachines/evolve`):d}let e=process.env[$t];if(e)try{let{createDaytonaProvider:a}=await import('@evolvingmachines/daytona');return a({apiKey:e})}catch(a){let d=a;throw d.message?.includes("Cannot find module")||d.message?.includes("MODULE_NOT_FOUND")?new Error(`${$t} is set but @evolvingmachines/daytona failed to load.
24
- Try installing: npm install @evolvingmachines/daytona`):d}let n=process.env[Ft],r=process.env[Gn];if(n&&r)try{let{createModalProvider:a}=await import('@evolvingmachines/modal');return a({tokenId:n,tokenSecret:r})}catch(a){let d=a;throw d.message?.includes("Cannot find module")||d.message?.includes("MODULE_NOT_FOUND")?new Error(`${Ft} is set but @evolvingmachines/modal failed to load.
25
- Try installing: npm install @evolvingmachines/modal`):d}let s=process.env[O];if(s)return at(s);throw new Error(`No sandbox provider configured. Either:
26
- 1. Set ${O} environment variable (recommended, get key at https://dashboard.evolvingmachines.ai)
27
- 2. Set ${Lt} environment variable (direct E2B access, get key at https://e2b.dev)
28
- 3. Set ${$t} environment variable (direct Daytona access, get key at https://app.daytona.io)
29
- 4. Set ${Ft} and ${Gn} environment variables (direct Modal access, get tokens at https://modal.com/settings/tokens)
30
- 5. Pass sandbox explicitly: .withSandbox(provider)`)}function od(t){return new Promise(e=>setTimeout(e,t))}async function G(t,e,n=0){let r=ad(e),s=e?.onItemRetry,a=null,d=0,u=r.backoffMs;for(;d<r.maxAttempts;){if(d++,a=await t(d),!r.retryOn(a))return a;if(d>=r.maxAttempts)break;if(s){let c=a.error??"Unknown error";s(n,d,c);}await od(u),u*=r.backoffMultiplier;}return a}function ad(t){return {maxAttempts:t?.maxAttempts??3,backoffMs:t?.backoffMs??1e3,backoffMultiplier:t?.backoffMultiplier??2,retryOn:t?.retryOn??(e=>e.status==="error")}}var Vi=`## FILESYSTEM INSTRUCTIONS:
22
+ `)??""}};case "agent_message":return {sessionUpdate:"agent_message_chunk",content:{type:"text",text:i.text??""}};case "mcp_tool_call":{let p=c(i.result),g=i.status==="failed"||i.error?"failed":"completed";return {sessionUpdate:"tool_call_update",toolCallId:a,status:g,content:p,rawOutput:i}}case "command_execution":{let p=i.aggregated_output?[{type:"content",content:{type:"text",text:i.aggregated_output}}]:[],g=i.status==="completed"||i.exit_code===0?"completed":"failed";return {sessionUpdate:"tool_call_update",toolCallId:a,status:g,content:p,rawOutput:i}}case "file_change":{let p=i.changes??[],g=p.map(f=>({path:f.path})),m=p.length===1?`${p[0].kind==="add"?"Create":"Edit"} ${p[0].path}`:`Edit ${p.length} files`;return {sessionUpdate:"tool_call",toolCallId:a,title:m,toolName:"file_change",kind:"edit",status:i.status==="completed"?"completed":"failed",rawInput:{changes:p},content:p.map(f=>({type:"diff",path:f.path,oldText:f.kind==="add"?null:"",newText:""})),locations:g}}case "web_search":return {sessionUpdate:"tool_call",toolCallId:a,title:`Search: ${i.query??""}`,toolName:"web_search",kind:"fetch",status:"completed",content:[]};case "todo_list":return {sessionUpdate:"plan",entries:l(i.items)};default:return null}}function c(i){return i?.content?Array.isArray(i.content)?i.content.map(a=>({type:"content",content:u(a)})):typeof i.content=="string"?[{type:"content",content:{type:"text",text:i.content}}]:[]:[]}function u(i){return i.type==="text"?{type:"text",text:i.text??""}:i.type==="image"?{type:"image",data:i.data??"",mimeType:i.mime_type??i.mimeType??"",uri:i.uri}:i}function l(i){if(!Array.isArray(i))return [];let a=false;return i.map(d=>{let p;return d.completed?p="completed":a?p="pending":(p="in_progress",a=true),{content:d.text??"",status:p,priority:"medium"}})}}var Ad={applypatch:"edit",apply_patch:"edit",create:"edit",edit:"edit",grep:"search",glob:"search",ls:"search",read:"read",write:"edit",execute:"execute",execute_cli:"execute",fetchurl:"fetch",fetch_url:"fetch",webfetch:"fetch",web_fetch:"fetch",websearch:"fetch",web_search:"fetch",skill:"execute",task:"think",todowrite:"other",todo_write:"other"},Id=new Set(["assistant_text_complete","thinking_text_complete","droid_working_state_changed","permission_resolved","settings_updated","session_title_updated","mcp_status_changed","session_token_usage_changed","mission_state_changed","mission_features_changed","mission_progress_entry","mission_heartbeat","mission_worker_started","mission_worker_completed","mcp_auth_required","mcp_auth_completed","structured_output"]);function Bn(){let t=new Map,e,n,r=false,s="",o;return function(u){let l;try{l=JSON.parse(u);}catch{return null}if(!Oo(l))return null;let i=Od(l);if(i.sessionId&&(e=i.sessionId),i.errorText)return [as(e,i.errorText,true)];if(i.resultText)return s=i.resultText,r=true,[qe(e,i.resultText)];if(i.handled)return null;let d=Md(l)??l,p=Io(d);p&&(e=p);let g=[],m=T(d,"type");switch(m){case "system":{let h=T(d,"model");return h&&(n=h),null}case "message":{let h=T(d,"role"),b=T(d,"text")||cs(d.content);if(!b)break;h==="assistant"&&(r=true,s=b,g.push(qe(e,b)));break}case "completion":{let h=T(d,"finalText")||T(d,"result");h&&(!r||h!==s)&&(r=true,s=h,g.push(qe(e,h)));let b=xt(d.usage);b&&g.push({sessionId:e,update:{sessionUpdate:"usage",scope:"run",usage:b}});break}case "assistant_text_delta":{let h=T(d,"textDelta")||T(d,"text");h&&(r=true,s+=h,g.push(qe(e,h)));break}case "thinking_text_delta":{let h=T(d,"textDelta")||T(d,"text");if(h){let b=Po(d,h,o);b&&(o=b.signature,g.push({sessionId:e,update:b.event}));}break}case "reasoning":{let h=T(d,"text");if(h){let b=Po(d,h,o);b&&(o=b.signature,g.push({sessionId:e,update:b.event}));}break}case "assistant":{let h=T(d,"text")||cs(K(d.message)?.content);h&&(r=true,s=h,g.push(qe(e,h)));break}case "tool_call":case "tool_call_delta":{let h=K(d.toolUse)??K(d.tool_use)??d,b=Ao(h,t);b&&g.push({sessionId:e,update:b});break}case "tool_result":{let h=Ud(d,t);h&&g.push({sessionId:e,update:h});break}case "tool_progress_update":case "tool_progress":{let h=$d(d);h&&g.push({sessionId:e,update:h});break}case "create_message":{for(let h of Dd(d,t)){if(h.sessionUpdate==="agent_message_chunk"){let b=h.content.type==="text"?h.content.text:"";if(r&&b===s)continue;r=true,s=b;}g.push({sessionId:e,update:h});}break}case "result":{if(d.is_error===true||d.subtype==="failure"){g.push(as(e,I([ke(d.result),ke(d.error),ke(d.subtype)],d),true));break}let h=ke(d.result??d.text??d.error);h&&(r=true,s=h,g.push(qe(e,h)));break}case "error":{g.push(as(e,I([ke(d.message),ke(d.error)],d),false));break}default:if(m&&!Id.has(m))return null}if(g.length>0&&m!=="reasoning"&&m!=="thinking_text_delta"&&(o=void 0),g.length===0)return null;let f=oe(d.timestamp);return g.map(h=>({...h,...f!==void 0?{timestamp:f}:{},...n!==void 0?{model:n}:{}}))}}function Po(t,e,n){let r=ls(t,"id")||ls(t,"messageId"),s=ls(t,"blockIndex"),o=`${T(t,"type")}:${r}:${s}:${e}`;return o===n?null:{signature:o,event:{sessionUpdate:"agent_thought_chunk",content:{type:"text",text:e}}}}function Od(t){if(t.type!=="response")return {handled:false};let e=K(t.result),n=K(t.error),r=Io(e??t);if(n)return {handled:true,sessionId:r,errorText:ke(n.message??n)};let s=e?T(e,"finalText")||T(e,"result"):"";return {handled:true,sessionId:r,resultText:s}}function Md(t){return t.method!=="droid.session_notification"?null:K(K(t.params)?.notification)}function Dd(t,e){let n=K(t.message);if(!n)return [];let r=[],s=n.content;if(Array.isArray(s))for(let o of s){let c=K(o);if(c&&c.type==="tool_use"){let u=Ao(c,e);u&&r.push(u);}}if(n.role==="assistant"){let o=cs(s);o&&r.push({sessionUpdate:"agent_message_chunk",content:{type:"text",text:o}});}return r}function Ao(t,e){let n=T(t,"id")||T(t,"toolUseId")||T(t,"tool_use_id"),r=T(t,"name")||T(t,"toolName")||T(t,"tool_name")||"Tool";if(!n)return null;e.set(n,r);let s=K(t.input)??K(t.toolInput)??K(t.arguments)??K(t.parameters)??{};if(Mo(r)==="todowrite"){let i=Ld(s);if(i)return i}let{title:o,kind:c,content:u,locations:l}=Fd(r,s);return {sessionUpdate:"tool_call",toolCallId:n,title:o,toolName:r,kind:c,status:"pending",rawInput:s,content:u,locations:l}}function Ud(t,e){let n=T(t,"toolUseId")||T(t,"tool_use_id")||T(t,"tool_id")||T(t,"id")||T(t,"toolId");if(!n)return null;let r=T(t,"toolName")||T(t,"tool_name")||e.get(n);return e.delete(n),{sessionUpdate:"tool_call_update",toolCallId:n,status:t.isError===true||t.is_error===true?"failed":"completed",title:r,content:ds(t.content??t.result??t.value??t.error)}}function $d(t){let e=T(t,"toolUseId")||T(t,"tool_use_id")||T(t,"tool_id")||T(t,"id")||T(t,"toolId");if(!e)return null;let n=K(t.update),r=ke(t.content??n?.text??n?.status??n?.details);return {sessionUpdate:"tool_call_update",toolCallId:e,status:"in_progress",content:r?ds(r):void 0}}function Ld(t){let e=t.todos;if(!Array.isArray(e))return null;let n=e.flatMap(r=>{let s=K(r);if(!s)return [];let o=T(s,"content"),c=Nd(T(s,"status")),u=Bd(T(s,"priority"));return o?[{content:o,status:c,priority:u}]:[]});return n.length>0?{sessionUpdate:"plan",entries:n}:null}function Fd(t,e){let n=Ad[Mo(t)]||"other",r=T(e,"path")||T(e,"filePath")||T(e,"file_path")||T(e,"absolute_path"),s=T(e,"command"),o=T(e,"url"),c=r||s||o;return {title:c?`${t} ${c}`:t,kind:n,content:Object.keys(e).length>0?ds(e):[],locations:r?[{path:r}]:[]}}function Io(t){if(t)return T(t,"session_id")||T(t,"sessionId")}function qe(t,e){return {sessionId:t,update:{sessionUpdate:"agent_message_chunk",content:{type:"text",text:e}}}}function as(t,e,n){return {sessionId:t,update:{sessionUpdate:"error",message:e,fatal:n}}}function cs(t){return typeof t=="string"?t:Array.isArray(t)?t.map(e=>{let n=K(e);return n?T(n,"text")||T(n,"content"):""}).filter(Boolean).join(""):""}function ds(t){let e=ke(t);return e?[{type:"content",content:{type:"text",text:e}}]:[]}function ke(t){if(typeof t=="string")return t;if(t==null)return "";try{return JSON.stringify(t)}catch{return String(t)}}function Oo(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function K(t){return Oo(t)?t:null}function T(t,e){let n=t[e];return typeof n=="string"?n:""}function ls(t,e){let n=t[e];return typeof n=="string"||typeof n=="number"||typeof n=="boolean"?String(n):""}function Mo(t){return t.replace(/[-_\s]/g,"").toLowerCase()}function Nd(t){return t==="in_progress"||t==="completed"?t:"pending"}function Bd(t){return t==="high"||t==="low"?t:"medium"}var jd={read:"read",read_image:"read",write:"edit",edit:"edit",glob:"search",grep:"search",bash:"execute",run_code:"execute",job_list:"execute",job_output:"execute",job_kill:"execute",web_search:"fetch",web_fetch:"fetch",subagent:"think",subagent_fork:"think",exit_plan_mode:"switch_mode"};function Jn(){let t,e,n=Te("dsh");return function(s){let o;try{o=JSON.parse(s);}catch{return null}if(!Do(o))return null;let c=L(o,"type"),u=[],l={};switch(o.truncated===true&&(l.truncated=true),c){case "session":{let i=L(o,"sessionId");i&&(t=i),u.push(U(c,o));break}case "status":{let i=Jd(o,l,n);i&&u.push(i);break}case "thinking":{let i=L(o,"text");i&&u.push({sessionUpdate:"agent_thought_chunk",content:{type:"text",text:i}});break}case "text":{let i=L(o,"text");i&&(e=i,u.push({sessionUpdate:"agent_message_chunk",content:{type:"text",text:i}}));break}case "tool_call":{u.push(...Vd(o));break}case "tool_result":{let i=Gd(o);i&&u.push(i);break}case "final":{let i=L(o,"text");i&&i!==e&&(e=i,u.push({sessionUpdate:"agent_message_chunk",content:{type:"text",text:i}}));break}case "error":{u.push({sessionUpdate:"error",message:I([o.message],o),fatal:true});break}default:n("event type",c),u.push(U(c,o));break}return u.length===0?null:u.map(i=>({sessionId:t,update:i,...Object.keys(l).length>0?{extra:l}:{}}))}}function Jd(t,e,n){let r=L(t,"phase");switch(r){case "turn_start":case "step_start":return null;case "step_end":{let s=Kd(t.usage);return s?(typeof t.turn=="number"&&(e.turn=t.turn),typeof t.step=="number"&&(e.step=t.step),{sessionUpdate:"usage",scope:"call",usage:s}):null}case "turn_end":{let s=Rt(t.reason),o=s?L(s,"kind"):"";if(o==="completed")return null;let c=s?Rt(s.error):null;typeof t.turn=="number"&&(e.turn=t.turn),o&&(e.kind=o);for(let u of ["code","status","requestId","providerRetryAfterMs"]){let l=c?.[u];l!=null&&(e[u]=l);}return {sessionUpdate:"error",message:I([c?.message,s?.reason],s??t),fatal:true}}default:return n("status phase",r),U("status",t)}}function Kd(t){let e=Rt(t);if(!e)return null;let n=jn(e.inputTokens),r=jn(e.outputTokens),s=jn(e.cacheReadTokens),o=jn(e.cacheWriteTokens),c={};(n!==void 0||s!==void 0||o!==void 0)&&(c.promptTokens=(n??0)+(s??0)+(o??0)),r!==void 0&&(c.completionTokens=r),s!==void 0&&(c.cachedTokens=s);let u={};for(let[l,i]of Object.entries(e))l==="inputTokens"||l==="outputTokens"||l==="cacheReadTokens"||i!=null&&(u[l]=i);return Object.keys(u).length>0&&(c.extra=u),c}function Vd(t){let e=L(t,"callId");if(!e)return [];let n=L(t,"tool"),r=Rt(t.input)??{},{title:s,kind:o,content:c,locations:u}=zd(n,r),l=[{sessionUpdate:"tool_call",toolCallId:e,title:s,toolName:n,kind:o,status:"pending",rawInput:t.input,content:c,locations:u}];if(n==="todo_write"){let i=Hd(r.todos);i.length>0&&l.push({sessionUpdate:"plan",entries:i});}return l}function Gd(t){let e=L(t,"callId");if(!e)return null;let n=qd(t.result);return {sessionUpdate:"tool_call_update",toolCallId:e,status:t.status==="error"?"failed":"completed",content:n?[{type:"content",content:{type:"text",text:n}}]:[]}}function zd(t,e){let n=jd[t]??"other",r=L(e,"file_path")||L(e,"path"),s=L(e,"command"),o=L(e,"url"),c=r||s||o||L(e,"pattern")||L(e,"name")||L(e,"description"),u=[],l=[];switch(t){case "read":{if(r){let i=e.offset;l.push({path:r,line:typeof i=="number"&&Number.isFinite(i)?Math.max(0,i-1):void 0});}break}case "write":{r&&(l.push({path:r}),typeof e.content=="string"&&u.push({type:"diff",path:r,oldText:null,newText:e.content}));break}case "edit":{r&&(l.push({path:r}),(typeof e.old_string=="string"||typeof e.new_string=="string")&&u.push({type:"diff",path:r,oldText:typeof e.old_string=="string"?e.old_string:"",newText:typeof e.new_string=="string"?e.new_string:""}));break}case "bash":{let i=L(e,"description");(i||s)&&u.push({type:"content",content:{type:"text",text:i||s}});break}case "glob":case "grep":{r&&l.push({path:r});break}case "web_fetch":case "web_search":{let i=o||L(e,"query");i&&u.push({type:"content",content:{type:"text",text:i}});break}case "subagent":case "subagent_fork":{let i=L(e,"description");i&&u.push({type:"content",content:{type:"text",text:i}});break}}return {title:c?`${t} ${c}`:t,kind:n,content:u,locations:l}}function Hd(t){if(!Array.isArray(t))return [];let e=[];for(let n of t){let r=Rt(n),s=r?L(r,"content"):"";if(!s)continue;let o=r?L(r,"status"):"";e.push({content:s,status:o==="in_progress"||o==="completed"?o:"pending",priority:"medium"});}return e}function jn(t){return typeof t=="number"&&Number.isFinite(t)?t:void 0}function qd(t){if(typeof t=="string")return t;if(t==null)return "";try{return JSON.stringify(t)}catch{return String(t)}}function Do(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Rt(t){return Do(t)?t:null}function L(t,e){let n=t[e];return typeof n=="string"?n:""}var Wd={read_file:"read",read_many_files:"read",write_file:"edit",replace:"edit",edit_file:"edit",run_shell_command:"execute",shell:"execute",glob:"search",grep:"search",search_file_content:"search",list_directory:"search",brave_web_search:"fetch",web_search:"fetch",google_web_search:"fetch",web_fetch:"fetch",delegate_to_agent:"think",write_todos:"other",save_memory:"other",activate_skill:"other"};function Kn(){let t,e;return function(i){let a;try{a=JSON.parse(i);}catch{return null}if(a._meta||a._prompt)return null;let d=(typeof a.session_id=="string"&&a.session_id?a.session_id:void 0)??e,p=[];switch(a.type){case "init":return typeof a.model=="string"&&a.model&&(t=a.model),typeof a.session_id=="string"&&a.session_id&&(e=a.session_id),null;case "result":{let m=n(a.stats);if(m&&p.push({sessionId:d,update:{sessionUpdate:"usage",scope:"run",usage:m}}),a.status!=="error")break;p.push({sessionId:d,update:{sessionUpdate:"error",message:I([a.error?.message,a.error?.type,'gemini ended the run with result status "error" and no error text'],a.error??a),fatal:true}});break}case "message":{let m=r(a);m&&p.push({sessionId:d,update:m});break}case "tool_use":{let m=s(a);m&&p.push({sessionId:d,update:m});break}case "tool_result":{let m=o(a);m&&p.push({sessionId:d,update:m});break}case "error":{let m=c(a);m&&p.push({sessionId:d,update:m});break}default:return null}if(p.length===0)return null;let g=oe(a.timestamp);return p.map(m=>({...m,...g!==void 0?{timestamp:g}:{},...t!==void 0?{model:t}:{}}))};function n(l){if(!l||typeof l!="object"||Array.isArray(l))return null;let i=l,a=h=>typeof h=="number"&&Number.isFinite(h)?h:void 0,d={},p=a(i.input_tokens),g=a(i.output_tokens),m=a(i.cached);p!==void 0&&(d.promptTokens=p),g!==void 0&&(d.completionTokens=g),m!==void 0&&(d.cachedTokens=m);let f={};for(let[h,b]of Object.entries(i))h==="input_tokens"||h==="output_tokens"||h==="cached"||b!=null&&(f[h]=b);return Object.keys(f).length>0&&(d.extra=f),d}function r(l){let i=l.role,a=l.content;return a?i==="assistant"?{sessionUpdate:"agent_message_chunk",content:{type:"text",text:a}}:i==="user"?{sessionUpdate:"user_message_chunk",content:{type:"text",text:a}}:null:null}function s(l){let i=l.tool_id,a=l.tool_name,d=l.parameters||{},{title:p,kind:g,content:m,locations:f}=u(a,d);return {sessionUpdate:"tool_call",toolCallId:i,title:p,toolName:a,kind:g,status:"pending",rawInput:d,content:m,locations:f}}function o(l){let i=l.tool_id,a=l.status,d=l.output,p=l.error,g=[];return d&&typeof d=="string"&&d.length>0&&g.push({type:"content",content:{type:"text",text:d}}),p?.message&&!d&&g.push({type:"content",content:{type:"text",text:p.message}}),{sessionUpdate:"tool_call_update",toolCallId:i,status:a==="success"?"completed":"failed",content:g}}function c(l){return {sessionUpdate:"error",message:I([l.message],l),fatal:false}}function u(l,i){let a=Wd[l]||"other",d=[],p=[],g=l;switch(l){case "read_file":g=`Read ${i.absolute_path||i.file_path||"file"}`,(i.absolute_path||i.file_path)&&p.push({path:i.absolute_path||i.file_path});break;case "write_file":g=`Write ${i.file_path||"file"}`,i.file_path&&(p.push({path:i.file_path}),d.push({type:"diff",path:i.file_path,oldText:null,newText:i.content||""}));break;case "edit_file":g=`Edit ${i.file_path||"file"}`,i.file_path&&p.push({path:i.file_path});break;case "replace":g=`Edit ${i.file_path||"file"}`,i.file_path&&(p.push({path:i.file_path}),(i.old_string!==void 0||i.new_string!==void 0)&&d.push({type:"diff",path:i.file_path,oldText:i.old_string||"",newText:i.new_string||""}));break;case "run_shell_command":case "shell":g=i.command?`\`${i.command}\``:"Run command",i.description&&d.push({type:"content",content:{type:"text",text:i.description}});break;case "brave_web_search":case "web_search":case "google_web_search":g=i.query?`"${i.query}"`:"Web search";break;case "web_fetch":g=i.prompt?`Fetch: ${i.prompt.substring(0,50)}...`:"Web fetch";break;case "glob":g=`Find ${i.pattern||"files"}`,i.dir_path&&p.push({path:i.dir_path});break;case "grep":case "search_file_content":g=`grep "${i.pattern||i.query||""}"`;break;case "list_directory":g=`List ${i.dir_path||i.path||"directory"}`,(i.dir_path||i.path)&&p.push({path:i.dir_path||i.path});break;case "read_many_files":g=`Read ${i.include?.length||"multiple"} files`,Array.isArray(i.include)&&i.include.forEach(m=>p.push({path:m}));break;case "delegate_to_agent":g=i.agent_name?`Agent: ${i.agent_name}`:"Delegate to agent";break;case "write_todos":g="Update todos";break;case "save_memory":g=i.fact?`Remember: "${i.fact.substring(0,40)}..."`:"Save memory";break;case "activate_skill":g=i.name?`Activate skill: ${i.name}`:"Activate skill";break;default:g=l;}return {title:g,kind:a,content:d,locations:p}}}var Yd={Read:"read",ReadFile:"read",ReadMediaFile:"read",Write:"edit",WriteFile:"edit",Edit:"edit",StrReplaceFile:"edit",Bash:"execute",Shell:"execute",Glob:"search",Grep:"search",WebSearch:"fetch",SearchWeb:"fetch",FetchURL:"fetch",Agent:"think",AgentSwarm:"think",Task:"think",Think:"think",CreateSubagent:"think",TodoList:"other",SetTodoList:"other"};function Uo(t){return t==="TodoList"||t==="SetTodoList"}function ps(t){return /<system>\s*ERROR:/i.test(t)||t.includes("<error>")||t.includes("ToolError")}function Lo(t){let e=/^data:([^;,]+)((?:;[^,]*)*),(.+)$/i.exec(t);if(!e)return null;let n=e[1]||"",r=e[2]||"",s=e[3]||"";return /;base64/i.test(r)?{mimeType:n,data:s}:null}function gs(t){if(!t||typeof t!="object")return null;if(t.type==="text"&&typeof t.text=="string"&&t.text.length>0)return {type:"content",content:{type:"text",text:t.text}};if(t.type==="image_url"&&typeof t.image_url?.url=="string"){let e=t.image_url.url,n=Lo(e);return n?{type:"content",content:{type:"image",data:n.data,mimeType:n.mimeType}}:{type:"content",content:{type:"image",data:"",mimeType:"",uri:e}}}return t.type==="video_url"&&typeof t.video_url?.url=="string"?{type:"content",content:{type:"text",text:`[video] ${t.video_url.url}`}}:t.type==="audio_url"&&typeof t.audio_url?.url=="string"?{type:"content",content:{type:"text",text:`[audio] ${t.audio_url.url}`}}:null}function us(t){let e=[];if(typeof t=="string")return t.length>0&&e.push({type:"content",content:{type:"text",text:t}}),e;if(Array.isArray(t)){for(let n of t){if(typeof n=="string"&&n.length>0){e.push({type:"content",content:{type:"text",text:n}});continue}let r=gs(n);r&&e.push(r);}return e}if(t&&typeof t=="object"){let n=gs(t);n&&e.push(n);}return e}function Zd(t){return t.some(e=>e.type==="content"&&e.content.type==="text"&&ps(e.content.text))}function Xd(t){if(!t||typeof t!="object")return null;if(t.type==="think"&&typeof t.think=="string"&&t.think.length>0)return {update:{sessionUpdate:"agent_thought_chunk",content:{type:"text",text:t.think}}};if(t.type==="text"&&typeof t.text=="string"&&t.text.length>0)return {update:{sessionUpdate:"agent_message_chunk",content:{type:"text",text:t.text}}};if(t.type==="image_url"&&typeof t.image_url?.url=="string"){let e=t.image_url.url,n=Lo(e);return n?{update:{sessionUpdate:"agent_message_chunk",content:{type:"image",data:n.data,mimeType:n.mimeType}}}:{update:{sessionUpdate:"agent_message_chunk",content:{type:"image",data:"",mimeType:"",uri:e}}}}return t.type==="video_url"&&typeof t.video_url?.url=="string"?{update:{sessionUpdate:"agent_message_chunk",content:{type:"text",text:`[video] ${t.video_url.url}`}}}:t.type==="audio_url"&&typeof t.audio_url?.url=="string"?{update:{sessionUpdate:"agent_message_chunk",content:{type:"text",text:`[audio] ${t.audio_url.url}`}}}:null}function Qd(t){return t==="in_progress"?"in_progress":t==="done"||t==="completed"?"completed":"pending"}function $o(t){if(!t||typeof t!="object")return [];let e=t.todos;return Array.isArray(e)?e.map(n=>{if(!n||typeof n!="object")return null;let r=n.title;if(typeof r!="string"||r.length===0)return null;let s=n.status;return {content:r,status:Qd(s),priority:"medium"}}).filter(n=>n!==null):[]}function ms(){let t=new Set,e=0;function n(u,l){return typeof u=="string"&&u.length>0?u:(e+=1,`kimi_${l.replace(/[^a-zA-Z0-9_]/g,"_")||"tool"}_${e}`)}return function(l){let i;try{i=JSON.parse(l);}catch{return null}if(!i||typeof i!="object")return null;let a=i.role;return "_meta"in i||"_prompt"in i?null:a==="meta"?i.type!=="turn.step.retrying"?null:[{update:{sessionUpdate:"error",message:I([i.error_message,i.error_name],i),fatal:false}}]:a==="assistant"?r(i):a==="tool"?s(i):typeof i.type=="string"&&"payload"in i?o(i):null};function r(u){let l=[],i=u.content,a=u.tool_calls;if(typeof i=="string"&&i.length>0)l.push({update:{sessionUpdate:"agent_message_chunk",content:{type:"text",text:i}}});else if(Array.isArray(i))for(let d of i){let p=Xd(d);p&&l.push(p);}if(Array.isArray(a))for(let d of a){if(!d||typeof d!="object")continue;let p=d.function;if(!p)continue;let g=p.name??"",m=n(d.id,g),f;try{f=p.arguments?JSON.parse(p.arguments):{};}catch{f=p.arguments;}if(Uo(g)){let y=$o(f);y.length>0&&l.push({update:{sessionUpdate:"plan",entries:y}}),t.add(m);continue}let{title:h,kind:b,toolContent:_,locations:w}=c(g,typeof f=="object"&&f!==null?f:{});l.push({update:{sessionUpdate:"tool_call",toolCallId:m,title:h,toolName:g,kind:b,status:"pending",rawInput:f,content:_,locations:w}});}return l.length>0?l:null}function s(u){let l=u.tool_call_id;if(typeof l!="string"||l.length===0)return null;if(t.has(l))return t.delete(l),null;let i=u.content,a=[],d=false;if(typeof i=="string")d=ps(i),i.length>0&&a.push({type:"content",content:{type:"text",text:i}});else if(Array.isArray(i))for(let p of i){let g=gs(p);g&&(g.type==="content"&&g.content.type==="text"&&ps(g.content.text)&&(d=true),a.push(g));}return [{update:{sessionUpdate:"tool_call_update",toolCallId:l,status:d?"failed":"completed",content:a}}]}function o(u){let l=u.type,i=u.payload??{},a=[];switch(l){case "TextPart":{let d=i.text;typeof d=="string"&&d.length>0&&a.push({update:{sessionUpdate:"agent_message_chunk",content:{type:"text",text:d}}});break}case "ThinkPart":{let d=i.think;typeof d=="string"&&d.length>0&&a.push({update:{sessionUpdate:"agent_thought_chunk",content:{type:"text",text:d}}});break}case "ToolCall":{let d=i.function?.name??"",p=n(i.id,d),g=i.function;if(!g)break;let m;try{m=g.arguments?JSON.parse(g.arguments):{};}catch{m=g.arguments;}if(Uo(d)){let w=$o(m);w.length>0&&a.push({update:{sessionUpdate:"plan",entries:w}}),t.add(p);break}let{title:f,kind:h,toolContent:b,locations:_}=c(d,typeof m=="object"&&m!==null?m:{});a.push({update:{sessionUpdate:"tool_call",toolCallId:p,title:f,toolName:d,kind:h,status:"pending",rawInput:m,content:b,locations:_}});break}case "ToolResult":{let d=i.tool_call_id;if(typeof d!="string"||d.length===0)break;if(t.has(d)){t.delete(d);break}let p=i.return_value??i.content,g=[],m=i.is_error===true;if(p&&typeof p=="object"&&!Array.isArray(p)){let f=p;m=m||f.type==="ToolError"||f.is_error===true,g.push(...us(f.output)),g.length===0&&typeof f.message=="string"&&f.message.length>0&&g.push({type:"content",content:{type:"text",text:f.message}}),g.length===0&&g.push(...us(p));}else g.push(...us(p));m=m||Zd(g),a.push({update:{sessionUpdate:"tool_call_update",toolCallId:d,status:m?"failed":"completed",content:g}});break}default:return null}return a.length>0?a:null}function c(u,l){let i=Yd[u]||"other",a=[],d=[],p=u;switch(u){case "Read":case "ReadFile":{let g=l.path??l.file_path;p=`Read ${g||"file"}`,g&&d.push({path:g});break}case "ReadMediaFile":{let g=l.path??l.file_path;p=`Read media ${g||"file"}`,g&&d.push({path:g});break}case "Write":case "WriteFile":{let g=l.path??l.file_path;p=`Write ${g||"file"}`,g&&(d.push({path:g}),typeof l.content=="string"&&a.push({type:"diff",path:g,oldText:null,newText:l.content}));break}case "Edit":case "StrReplaceFile":{let g=l.path??l.file_path;p=`Edit ${g||"file"}`,g&&d.push({path:g});break}case "Bash":case "Shell":p=l.command?`\`${l.command}\``:"Run command";break;case "Glob":p=`Find ${l.pattern||"files"}`,l.path&&d.push({path:l.path});break;case "Grep":p=`grep "${l.pattern||""}"`,l.path&&d.push({path:l.path});break;case "WebSearch":case "SearchWeb":p=l.query?`"${l.query}"`:"Web search";break;case "FetchURL":p=l.url?`Fetch ${l.url}`:"Web fetch";break;case "Agent":case "AgentSwarm":case "Task":p=l.description||"Subagent task";break;case "Think":p=l.thought||"Thinking";break;case "CreateSubagent":p=l.name?`Subagent: ${l.name}`:"Create subagent";break;case "TodoList":case "SetTodoList":p="Update todos";break;default:p=u;}return {title:p,kind:i,toolContent:a,locations:d}}}var eu={read:"read",write:"edit",edit:"edit",multiedit:"edit",apply_patch:"edit",bash:"execute",glob:"search",grep:"search",list:"search",codesearch:"search",lsp:"search",webfetch:"fetch",websearch:"fetch",task:"think",batch:"think",plan_enter:"switch_mode",plan_exit:"switch_mode",todoread:"other",todowrite:"other",skill:"other",question:"other"};function tu(t){let e=/^data:([^;,]+)?((?:;[^,]+)*),(.*)$/s.exec(t);if(!e)return null;let n=e[1]||"",r=e[2]||"",s=e[3]||"";return /;base64/i.test(r)?{mimeType:n,data:s}:null}function nu(t){if(typeof t!="string")return "pending";switch(t.toLowerCase()){case "in_progress":case "in-progress":case "running":return "in_progress";case "completed":case "done":case "cancelled":return "completed";default:return "pending"}}function ru(t){return t==="high"||t==="medium"||t==="low"?t:"medium"}function Fo(t){return Array.isArray(t)?t.map(e=>{if(!e||typeof e!="object")return null;let n=e.content;return typeof n!="string"||n.length===0?null:{content:n,status:nu(e.status),priority:ru(e.priority)}}).filter(e=>e!==null):[]}function su(t){if(!t||typeof t!="object")return null;let e=t,n=typeof e.mime=="string"?e.mime:"",r=typeof e.url=="string"?e.url:"";if(n.startsWith("image/")){if(r.length>0){let u=tu(r);return u?{type:"content",content:{type:"image",data:u.data,mimeType:u.mimeType||n}}:{type:"content",content:{type:"image",data:"",mimeType:n,uri:r}}}return null}return {type:"content",content:{type:"text",text:`[attachment] ${(typeof e.filename=="string"?e.filename:"")||"attachment"} (${n||"file"})`}}}function iu(t,e){if(t==="error")return typeof e.error=="string"?e.error:null;if(typeof e.output=="string")return e.output;if(e.output===void 0||e.output===null)return null;try{return JSON.stringify(e.output)}catch{return String(e.output)}}function ou(t,e){return t==="error"?"failed":t==="running"?"in_progress":t==="pending"?"pending":typeof e=="number"&&e!==0?"failed":"completed"}function fs(){return function(l){let i;try{i=JSON.parse(l);}catch{return null}if(!i||typeof i!="object")return null;let a=i.sessionID,d=[];switch(i.type){case "step_start":return null;case "step_finish":{let g=t(i.part);if(!g)return null;d.push({sessionUpdate:"usage",scope:"call",usage:g});break}case "user":{let g=e(i);g&&d.push(g);break}case "text":{let g=n(i);g&&d.push(g);break}case "reasoning":{let g=r(i);g&&d.push(g);break}case "tool_use":{d.push(...s(i));break}case "error":{let g=o(i);g&&d.push(g);break}default:return null}if(d.length===0)return null;let p=oe(i.timestamp);return d.map(g=>({sessionId:a,update:g,...p!==void 0?{timestamp:p}:{}}))};function t(u){if(!u||typeof u!="object")return null;let l=u.tokens;if(!l||typeof l!="object")return null;let i=l,a=typeof i.cache=="object"&&i.cache?i.cache:{},d=y=>typeof y=="number"&&Number.isFinite(y)?y:void 0,p=d(i.input),g=d(i.output),m=d(a.read),f=d(a.write),h=d(i.reasoning),b=d(u.cost),_={};(p!==void 0||m!==void 0)&&(_.promptTokens=(p??0)+(m??0)),g!==void 0&&(_.completionTokens=g),m!==void 0&&(_.cachedTokens=m),b!==void 0&&b>0&&(_.costUsd=b);let w={};return h&&(w.reasoning_tokens=h),f&&(w.cache_write_tokens=f),Object.keys(w).length>0&&(_.extra=w),_}function e(u){let i=(Array.isArray(u.parts)?u.parts:[]).filter(a=>a&&typeof a=="object"&&a.type==="text"&&typeof a.text=="string"&&a.text).map(a=>a.text).join(`
23
+ `);return i.length===0?null:{sessionUpdate:"user_message_chunk",content:{type:"text",text:i}}}function n(u){let l=u.part?.text;return typeof l!="string"||l.length===0?null:{sessionUpdate:"agent_message_chunk",content:{type:"text",text:l}}}function r(u){let l=u.part?.text;return typeof l!="string"||l.length===0?null:{sessionUpdate:"agent_thought_chunk",content:{type:"text",text:l}}}function s(u){let l=u.part;if(!l)return [];let i=typeof l.callID=="string"?l.callID:"";if(i.length===0)return [];let a=typeof l.tool=="string"?l.tool:"",d=a.toLowerCase(),p=typeof l.state=="object"&&l.state?l.state:{},g=typeof p.input=="object"&&p.input?p.input:{},m=p.status,f=p.title??p.metadata?.description??d,h=p.metadata?.exit,{kind:b,content:_,locations:w}=c(d,g),y=[];if(y.push({sessionUpdate:"tool_call",toolCallId:i,title:f,toolName:a,kind:b,status:"pending",rawInput:g,content:_,locations:w}),d==="todowrite"){let v=Fo(g.todos);if(v.length===0&&typeof p.output=="string")try{v=Fo(JSON.parse(p.output));}catch{}v.length>0&&y.push({sessionUpdate:"plan",entries:v});}let k=ou(m,h);if(k==="pending")return y;let R=iu(m,p),S=[];if(typeof R=="string"&&R.length>0&&S.push({type:"content",content:{type:"text",text:R}}),Array.isArray(p.attachments))for(let v of p.attachments){let E=su(v);E&&S.push(E);}return y.push({sessionUpdate:"tool_call_update",toolCallId:i,status:k,content:S,rawOutput:p}),y}function o(u){return {sessionUpdate:"error",message:I([u.error?.data?.message,u.error?.message,u.error?.name],u.error??u),fatal:false}}function c(u,l){let i=eu[u]||"other",a=[],d=[];switch(u){case "read":{let p=l.filePath??l.path;if(p){let g=l.offset;d.push({path:p,line:typeof g=="number"&&Number.isFinite(g)?Math.max(0,g-1):void 0});}break}case "write":{let p=l.filePath??l.path;p&&(d.push({path:p}),typeof l.content=="string"&&a.push({type:"diff",path:p,oldText:null,newText:l.content}));break}case "edit":case "multiedit":{let p=l.filePath??l.path;p&&(d.push({path:p}),u==="edit"&&(l.oldString!==void 0||l.newString!==void 0)&&a.push({type:"diff",path:p,oldText:l.oldString??"",newText:l.newString??""}));break}case "apply_patch":break;case "bash":{let p=l.command;p&&l.description?a.push({type:"content",content:{type:"text",text:l.description}}):p&&a.push({type:"content",content:{type:"text",text:p}});break}case "glob":case "list":{let p=l.path;p&&d.push({path:p});break}case "grep":{let p=l.path;p&&d.push({path:p});break}case "codesearch":case "websearch":{let p=l.query;p&&a.push({type:"content",content:{type:"text",text:p}});break}case "webfetch":{let p=l.url;p&&a.push({type:"content",content:{type:"text",text:p}});break}case "task":{let p=l.description;p&&a.push({type:"content",content:{type:"text",text:p}});break}}return {kind:i,content:a,locations:d}}}var au=new Set(["agent_start","turn_start","turn_end","agent_settled"]);function Gn(t){let e,n,r=false,s=false,o,c=false,u=new Map,l=new Set,i=new Set,a=Te(t.harness);return function(y){let k;try{k=JSON.parse(y);}catch{return null}if(!No(k))return null;let R=O(k,"type");if(!R||au.has(R))return null;switch(R){case "session":{let S=O(k,"id");return S&&(e=S),null}case "agent_end":return k.willRetry===false&&o!==void 0&&!c?(c=true,[_({sessionUpdate:"error",message:o,fatal:true})]):null;case "message_start":return d(q(k.message));case "message_update":return p(k);case "message_end":return g(q(k.message));case "tool_execution_start":return m(k);case "tool_execution_update":return f(k);case "tool_execution_end":return h(k);case "auto_retry_start":return [_(U(R,k))];case "auto_retry_end":return k.success===false?c?null:(c=true,[_({sessionUpdate:"error",message:I([k.finalError,o],k),fatal:true})]):[_(U(R,k))];default:return t.knownEvents.has(R)||a("event type",R),[_(U(R,k))]}};function d(w){if(!w)return null;let y=O(w,"role");if(y==="assistant")return n=O(w,"model")||void 0,r=false,s=false,o=void 0,c=false,null;if(y==="user"){let k=hs(w.content);return k?[_({sessionUpdate:"user_message_chunk",content:{type:"text",text:k}},Vn(w))]:null}if(y==="custom"){if(O(w,"customType")!=="agent_message")return null;let k=hs(w.content);if(!k)return null;let R=q(w.details),S={customType:"agent_message"};return R?.from!==void 0&&(S.from=R.from),[_({sessionUpdate:"user_message_chunk",content:{type:"text",text:k}},{...Vn(w),extra:S})]}return y==="system"||y==="toolResult"?null:[_(U("message_start",{message:w}))]}function p(w){let y=q(w.assistantMessageEvent);if(!y)return null;let k=O(y,"delta");if(!k)return null;let R=q(w.message),S=R?Vn(R):{};S.model===void 0&&n&&(S.model=n);let v=O(y,"type");return v==="text_delta"?(r=true,[_({sessionUpdate:"agent_message_chunk",content:{type:"text",text:k}},S)]):v==="thinking_delta"?(s=true,[_({sessionUpdate:"agent_thought_chunk",content:{type:"text",text:k}},S)]):null}function g(w){if(!w||O(w,"role")!=="assistant")return null;let y=Vn(w),k=[],R=Array.isArray(w.content)?w.content:[];for(let C of R){let P=q(C);if(!P)continue;let N=O(P,"type");if(N==="thinking"&&!s){let ee=O(P,"thinking");ee&&k.push(_({sessionUpdate:"agent_thought_chunk",content:{type:"text",text:ee}},y));}else if(N==="text"&&!r){let ee=O(P,"text");ee&&k.push(_({sessionUpdate:"agent_message_chunk",content:{type:"text",text:ee}},y));}else if(N==="toolCall"){let ee=O(P,"id"),ht=O(P,"name");if(!ee||!ht)continue;k.push(_(b(ee,ht,q(P.arguments)??{}),y));}}let S=O(w,"stopReason");(S==="error"||S==="aborted")&&(o=I([w.errorMessage,S],w),k.push(_({sessionUpdate:"error",message:o,fatal:false},y)));let v=lu(w.usage),E=v!==null&&(S==="error"||S==="aborted")&&cu(v);return v&&!E&&k.push(_({sessionUpdate:"usage",scope:"call",usage:v},y)),k.length>0?k:null}function m(w){let y=O(w,"toolCallId"),k=O(w,"toolName");return !y||!k||l.has(y)?null:[_(b(y,k,q(w.args)??{}))]}function f(w){let y=O(w,"toolCallId");return !y||i.has(y)?null:(i.add(y),[_({sessionUpdate:"tool_call_update",toolCallId:y,status:"in_progress"})])}function h(w){let y=O(w,"toolCallId");if(!y)return null;let k=O(w,"toolName")||u.get(y)||"",R=q(w.result),S=R?q(R.details):null,v=w.isError===true,E=v||t.toolFailed(k,S,v),C=R?hs(R.content):"";return u.delete(y),l.delete(y),i.delete(y),[_({sessionUpdate:"tool_call_update",toolCallId:y,status:E?"failed":"completed",content:C?[{type:"content",content:{type:"text",text:C}}]:[],...R!==null?{rawOutput:R}:{}})]}function b(w,y,k){u.set(w,y),l.add(w);let R=t.describeTool(y,k);return {sessionUpdate:"tool_call",toolCallId:w,title:R.title,toolName:y,kind:R.kind,status:"pending",rawInput:k,content:R.content,locations:R.locations}}function _(w,y={}){return {sessionId:e,update:w,...y.timestamp!==void 0?{timestamp:y.timestamp}:{},...y.model!==void 0?{model:y.model}:{},...y.messageId!==void 0?{messageId:y.messageId}:{},...y.extra!==void 0?{extra:y.extra}:{}}}}function Vn(t){let e={},n=oe(t.timestamp);n!==void 0&&(e.timestamp=n);let r=O(t,"model");r&&(e.model=r);let s=O(t,"responseId");s&&(e.messageId=s);let o={};for(let c of ["stopReason","rawStopReason","stopReasonRaw","responseModel","provider","api"]){let u=t[c];typeof u=="string"&&u.length>0&&(o[c]=u);}return Object.keys(o).length>0&&(e.extra=o),e}function lu(t){let e=q(t);if(!e)return null;let n=Ct(e.input),r=Ct(e.output),s=Ct(e.cacheRead),o=Ct(e.cacheWrite);if(n===void 0&&r===void 0&&s===void 0&&o===void 0)return null;let c={};(n!==void 0||s!==void 0||o!==void 0)&&(c.promptTokens=(n??0)+(s??0)+(o??0)),r!==void 0&&(c.completionTokens=r),s!==void 0&&(c.cachedTokens=s);let u=Ct(q(e.cost)?.total);u!==void 0&&u>0&&(c.costUsd=u);let l={};for(let[i,a]of Object.entries(e))i==="input"||i==="output"||i==="cost"||a!=null&&(l[i]=a);return Object.keys(l).length>0&&(c.extra=l),c}function cu(t){return !t.promptTokens&&!t.completionTokens&&!t.cachedTokens&&!t.costUsd}function hs(t){return typeof t=="string"?t:Array.isArray(t)?t.map(e=>{let n=q(e);return n&&n.type==="text"?O(n,"text"):""}).filter(Boolean).join(""):""}function No(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function q(t){return No(t)?t:null}function O(t,e){let n=t[e];return typeof n=="string"?n:""}function Ct(t){return typeof t=="number"&&Number.isFinite(t)?t:void 0}var du={read:"read",write:"edit",edit:"edit",bash:"execute",grep:"search",find:"search",ls:"search",mcp:"other"},uu=new Set(["entry_appended","queue_update","session_info_changed","thinking_level_changed","compaction_start","compaction_end","summarization_retry_scheduled","summarization_retry_attempt_start","summarization_retry_finished"]);function zn(){return Gn({harness:"pi",describeTool:gu,toolFailed:pu,knownEvents:uu})}function pu(t,e,n){return n?true:t==="mcp"&&e!==null&&typeof e.error=="string"&&e.error.length>0}function gu(t,e){let n=du[t]??"other",r=[],s=[],o=O(e,"path");switch(t){case "read":{if(o){let c=e.offset;r.push({path:o,line:typeof c=="number"&&Number.isFinite(c)?Math.max(0,c-1):void 0});}return {title:o?`read ${o}`:"read",kind:n,locations:r,content:s}}case "write":return o&&(r.push({path:o}),typeof e.content=="string"&&s.push({type:"diff",path:o,oldText:null,newText:e.content})),{title:o?`write ${o}`:"write",kind:n,locations:r,content:s};case "edit":return o&&(r.push({path:o}),(typeof e.oldText=="string"||typeof e.newText=="string")&&s.push({type:"diff",path:o,oldText:typeof e.oldText=="string"?e.oldText:"",newText:typeof e.newText=="string"?e.newText:""})),{title:o?`edit ${o}`:"edit",kind:n,locations:r,content:s};case "bash":{let c=O(e,"command");return c&&s.push({type:"content",content:{type:"text",text:c}}),{title:c?`bash ${c}`:"bash",kind:n,locations:r,content:s}}case "grep":case "find":case "ls":{o&&r.push({path:o});let c=O(e,"pattern");return {title:c?`${t} ${c}`:o?`${t} ${o}`:t,kind:n,locations:r,content:s}}case "mcp":{let c=O(e,"tool"),u=O(e,"search"),l=O(e,"server"),i=c||(u?`search ${u}`:l||""),a=q(e.args);return a&&s.push({type:"content",content:{type:"text",text:JSON.stringify(a)}}),{title:i?`mcp ${i}`:"mcp",kind:n,locations:r,content:s}}default:return {title:t,kind:n,locations:r,content:s}}}var mu=new Set(["session_action_update","compaction_start","compaction_end","session_info_changed","thinking_level_changed","service_tier_changed","auth_stale","ipython_sent_agent_message","rlm_child_update","rlm_progress_note","recap_update","goal_update","bash_start","bash_output","bash_end","refine_complete","refine_failed"]);function Hn(){return Gn({harness:"prime-agent",describeTool:hu,toolFailed:fu,knownEvents:mu})}function fu(t,e,n){return n?true:e!==null&&e.status==="error"}function hu(t,e){let n=[];if(t==="ipython"){let r=O(e,"code");r&&n.push({type:"content",content:{type:"text",text:r}});let s=r.split(`
24
+ `).find(o=>o.trim().length>0)?.trim()??"";return {title:s?`ipython ${s}`:"ipython",kind:"execute",locations:[],content:n}}return {title:t,kind:"other",locations:[],content:n}}var yu={Read:"read",read_file:"read",Write:"edit",Edit:"edit",write_file:"edit",edit_file:"edit",Bash:"execute",BashOutput:"execute",KillShell:"execute",shell:"execute",run_shell_command:"execute",WebFetch:"fetch",WebSearch:"fetch",brave_web_search:"fetch",Glob:"search",Grep:"search",LS:"search",list_directory:"search",Task:"think",TodoWrite:"other",ExitPlanMode:"switch_mode"};function qn(){let t=new Map,e=new Map;return function(d){let p;try{p=JSON.parse(d);}catch{return null}if(!p||typeof p!="object")return null;let g=p;if("_meta"in g||"_prompt"in g)return null;let m=g.session_id||void 0,f=[];switch(g.type){case "assistant":{let R=g;f.push(...r(R));let S=n(R.message?.usage);S&&f.push({sessionUpdate:"usage",scope:"call",usage:S});break}case "stream_event":{f.push(...s(g));break}case "user":{f.push(...o(g));break}case "system":return null;case "result":{let R=n(g.usage);if(R&&f.push({sessionUpdate:"usage",scope:"run",usage:R}),g.is_error!==true)break;let S=g.error;f.push({sessionUpdate:"error",message:I([S?.message,g.subtype],g.error??g),fatal:true});break}default:return null}if(f.length===0)return null;let h=g.message,b=typeof h?.model=="string"&&h.model?h.model:void 0,_=typeof h?.id=="string"&&h.id?h.id:void 0,w=typeof g.parent_tool_use_id=="string"&&g.parent_tool_use_id?g.parent_tool_use_id:void 0,y=h?.stop_reason,k=y!=null?{stop_reason:y}:void 0;return f.map(R=>({sessionId:m,update:R,...b!==void 0?{model:b}:{},..._!==void 0?{messageId:_}:{},...w!==void 0?{parentToolCallId:w}:{},...k!==void 0?{extra:k}:{}}))};function n(a){if(!a||typeof a!="object"||Array.isArray(a))return null;let d=a,p=_=>typeof _=="number"&&Number.isFinite(_)?_:void 0,g={},m=p(d.input_tokens),f=p(d.output_tokens),h=p(d.cache_read_input_tokens);m!==void 0&&(g.promptTokens=m),f!==void 0&&(g.completionTokens=f),h!==void 0&&(g.cachedTokens=h);let b={};for(let[_,w]of Object.entries(d))_==="input_tokens"||_==="output_tokens"||_==="cache_read_input_tokens"||w!=null&&(b[_]=w);return Object.keys(b).length>0&&(g.extra=b),g}function r(a){let d=[],p=a.message?.content;if(!Array.isArray(p))return d;for(let g of p){let m=c(g);d.push(...m);}return d}function s(a){let d=[],p=a.event;if(!p)return d;switch(p.type){case "content_block_start":{let g=p.index??0,m=p.content_block;m&&(t.set(g,m),m.type==="tool_use"&&e.set(g,""));break}case "content_block_delta":{let g=p.index??0,m=p.delta,f=t.get(g);if(m?.type==="text_delta"&&m.text)d.push({sessionUpdate:"agent_message_chunk",content:{type:"text",text:m.text}});else if(m?.type==="thinking_delta"&&m.thinking)d.push({sessionUpdate:"agent_thought_chunk",content:{type:"text",text:m.thinking}});else if(m?.type==="input_json_delta"&&m.partial_json&&f?.type==="tool_use"){let h=e.get(g)||"";e.set(g,h+m.partial_json);}break}case "content_block_stop":{let g=p.index??0,m=t.get(g);if(m&&!(m.type==="text"&&m.text)){if(!(m.type==="thinking"&&m.thinking)){if(m.type==="tool_use"){let f=m,h=e.get(g)||"";e.delete(g);let b=f.input;if(h)try{b=JSON.parse(h);}catch{}let _={...f,input:b},w=u(_);w&&d.push(w);}else if(m.type==="tool_result"){let f=l(m);f&&d.push(f);}}}t.delete(g);break}}return d}function o(a){let d=a.message?.content,p=[];if(typeof d=="string")return p.push({sessionUpdate:"user_message_chunk",content:{type:"text",text:d}}),p;if(Array.isArray(d)){for(let g of d)if(g.type==="text")p.push({sessionUpdate:"user_message_chunk",content:{type:"text",text:g.text}});else if(g.type==="tool_result"){let m=l(g);m&&p.push(m);}}return p}function c(a){switch(a.type){case "text":return a.text?[{sessionUpdate:"agent_message_chunk",content:{type:"text",text:a.text}}]:[];case "thinking":return a.thinking?[{sessionUpdate:"agent_thought_chunk",content:{type:"text",text:a.thinking}}]:[];case "tool_use":{let d=u(a);return d?[d]:[]}case "tool_result":{let d=l(a);return d?[d]:[]}}}function u(a){let d=a.id,p=a.name,g=a.input;if(p==="TodoWrite"&&Array.isArray(g?.todos))return {sessionUpdate:"plan",entries:g.todos.map(_=>({content:_.content,status:_.status||"pending",priority:"medium"}))};let{title:m,kind:f,content:h,locations:b}=i(p,g||{});return {sessionUpdate:"tool_call",toolCallId:d,title:m,toolName:p,kind:f,status:"pending",rawInput:g,content:h,locations:b}}function l(a){let d=a.tool_use_id,p=a.is_error??false,g=a.content,m=[];if(typeof g=="string"&&g.length>0)m.push({type:"content",content:{type:"text",text:g}});else if(Array.isArray(g))for(let f of g)f.type==="text"&&m.push({type:"content",content:{type:"text",text:f.text}});return {sessionUpdate:"tool_call_update",toolCallId:d,status:p?"failed":"completed",content:m}}function i(a,d){let p=yu[a]||"other",g=[],m=[],f=a;switch(a){case "Read":case "read_file":f=`Read ${d.file_path||d.absolute_path||"file"}`,(d.file_path||d.absolute_path)&&m.push({path:d.file_path||d.absolute_path});break;case "Write":case "write_file":f=`Write ${d.file_path||"file"}`,d.file_path&&(m.push({path:d.file_path}),g.push({type:"diff",path:d.file_path,oldText:null,newText:d.content||""}));break;case "Edit":case "edit_file":f=`Edit ${d.file_path||"file"}`,d.file_path&&m.push({path:d.file_path});break;case "Bash":case "shell":case "run_shell_command":f=d.command?`\`${d.command}\``:"Run command",d.description&&g.push({type:"content",content:{type:"text",text:d.description}});break;case "WebFetch":f=d.url?`Fetch ${d.url}`:"Web fetch";break;case "WebSearch":case "brave_web_search":f=d.query?`"${d.query}"`:"Web search";break;case "Glob":f=`Find ${d.pattern||"files"}`,d.path&&m.push({path:d.path});break;case "Grep":f=`grep "${d.pattern||""}"`;break;case "LS":case "list_directory":f=`List ${d.path||"directory"}`,d.path&&m.push({path:d.path});break;case "Task":f=d.description||"Subagent task";break;case "TodoWrite":f="Update todos";break;case "ExitPlanMode":f="Exit plan mode";break;default:f=a;}return {title:f,kind:p,content:g,locations:m}}}function Bo(t){return qn()(t)}var bu={read:"read",write:"edit",edit:"edit",multiedit:"edit",notebookedit:"edit",bash:"execute",glob:"search",grep:"search",ls:"search",webfetch:"fetch",websearch:"fetch",skill:"execute",agent:"think",task:"think",todowrite:"other"},_u=new Set(["session.titleUpdated","session.resumed","checkpoint.created","streamRecovery.updated"]),wu=new Set(["start","finish","text_start","text_end","reasoning_start","reasoning_end","tool_input_start","tool_input_delta","tool_input_end"]);function Yn(){let t,e=new Map,n=new Map,r=new Map,s=new Map,o=new Map,c,u=false,l=Te("zcode");return function(d){let p;try{p=JSON.parse(d);}catch{return null}if(!We(p))return null;let g=A(p,"type");if(!g)return null;let m=A(p,"sessionId")||void 0;t===void 0&&m&&(t=m);let f=m??t,h=f!==void 0&&f!==t,b=[],_=f?r.get(f):void 0,w={};if(g==="result"){let S=ys(p.usage);S&&!u&&(u=true,b.push({sessionUpdate:"usage",scope:"run",usage:S}));let v=A(p,"response"),E=c?s.get(c)??"":"";return v&&v!==E&&b.push(_s(v)),_=c,i(b,f,void 0,_,w,h?f:void 0)}let y=ve(p.payload)??{},k=oe(p.timestamp);switch(g){case "turn.started":{let S=A(y,"input");S&&b.push({sessionUpdate:"user_message_chunk",content:{type:"text",text:S}}),_=void 0;break}case "session.updated":{let S=A(y,"type");if(S){switch(S){case "model_request_started":{let v=A(y,"modelId");v&&f&&n.set(f,v),b.push(U(g,p));break}case "model_request_completed":{let v=ys(y.usage);v&&b.push({sessionUpdate:"usage",scope:"call",usage:v});let E=A(y,"finishReason");E&&(w.finishReason=E);break}case "model_request_failed":{b.push({sessionUpdate:"error",message:I([y.message,y.providerErrorMessage,y.errorCode],y),fatal:false}),ws(y,w,["errorCode","statusCode","retryable","attempt","maxAttempts"]);break}case "model_retry_scheduled":b.push(U(g,p));break;default:l("event type",`session.updated/${S}`),b.push(U(g,p));}break}if(typeof y.modelId=="string"&&typeof y.providerId=="string"&&"messageCount"in y){f&&n.set(f,y.modelId),b.push(U(g,p));break}if(We(y.usage)&&"stopReason"in y){let v=A(y,"content"),E=_?s.get(_)??"":"";v&&v!==E&&(b.push(_s(v)),_&&s.set(_,v));let C=A(y,"stopReason");C&&(w.stopReason=C);break}if(typeof y.toolCallId=="string"&&typeof y.status=="string"&&!("childSessionId"in y))break;if(We(y.modelSelection)){let v=A(y.modelSelection,"modelId");v&&f&&n.set(f,v),b.push(U(g,p));break}if(typeof y.childSessionId=="string"&&typeof y.parentToolCallId=="string"){e.set(y.childSessionId,y.parentToolCallId),b.push(U(g,p));break}if(We(y.error)&&"retryable"in y){b.push({sessionUpdate:"error",message:I([ve(y.error)?.message],y),fatal:false});break}l("event type",`session.updated/{${Object.keys(y).sort().join(",")}}`),b.push(U(g,p));break}case "model.streaming":{let S=A(y,"kind"),v=A(y,"assistantMessageId");switch(v&&f&&(r.set(f,v),h||(c=v),_=v),S){case "text_delta":{let E=A(y,"delta");E&&(b.push(_s(E)),_&&s.set(_,(s.get(_)??"")+E));break}case "reasoning_delta":{let E=A(y,"delta");E&&b.push({sessionUpdate:"agent_thought_chunk",content:{type:"text",text:E}});break}case "tool_call":{let E=jo(o,A(y,"toolCallId"),A(y,"toolName"),ve(y.input)??{});E&&b.push(E);break}case "error":{b.push({sessionUpdate:"error",message:I([y.message,y.delta],y),fatal:false});break}default:wu.has(S)||(l("event type",`model.streaming/${S||"?"}`),b.push(U(g,p)));}break}case "tool.updated":{let S=A(y,"kind"),v=A(y,"toolCallId"),E=A(y,"assistantMessageId");switch(E&&(_=E),S){case "scheduled":{if(o.get(v)?.emitted)break;let C=jo(o,v,A(y,"toolName"),ve(y.input)??{},vu(y.display));C&&b.push(C);break}case "started":{if(!v)break;b.push({sessionUpdate:"tool_call_update",toolCallId:v,status:"in_progress",title:bs(o.get(v))||A(y,"toolName")||void 0});break}case "progress":{if(!v)break;let C=A(y,"outputPreview")||A(y,"stdoutTail")||A(y,"stderrTail");b.push({sessionUpdate:"tool_call_update",toolCallId:v,status:"in_progress",content:C?Wn(C):void 0});break}case "result":{if(!v)break;let C=ve(y.result)??{};b.push({sessionUpdate:"tool_call_update",toolCallId:v,status:C.success===false?"failed":"completed",title:bs(o.get(v))||void 0,content:Wn(C.content),rawOutput:y.result}),o.delete(v);break}case "error":{if(!v)break;let C=ve(y.error);b.push({sessionUpdate:"tool_call_update",toolCallId:v,status:"failed",title:bs(o.get(v))||void 0,content:Wn(I([C?.message,C?.code],y.error??y)),rawOutput:y.error}),o.delete(v);break}case "batch":break;default:l("event type",`tool.updated/${S||"?"}`),b.push(U(g,p));}break}case "turn.completed":{let S=A(y,"resultType");if(S&&S!=="success"&&(b.push({sessionUpdate:"error",message:I([S],y),fatal:true}),w.resultType=S,!h)){let v=ys(y.usage);v&&!u&&(u=true,b.push({sessionUpdate:"usage",scope:"run",usage:v}));}break}case "turn.failed":{let S=ve(y.error)??{};b.push({sessionUpdate:"error",message:I([S.message,S.detail,S.code],y),fatal:true}),ws(S,w,["code","type"]),ws(y,w,["turnPhase"]);break}default:_u.has(g)||l("event type",g),b.push(U(g,p));}let R=h&&f?e.get(f):void 0;return i(b,f,k,_,w,h?f:void 0,R)};function i(a,d,p,g,m,f,h){if(a.length===0)return null;let b=d!==void 0?n.get(d):void 0;return f&&(m.childSessionId=f),a.map(_=>({sessionId:t??d,update:_,...p!==void 0?{timestamp:p}:{},...b!==void 0?{model:b}:{},...g!==void 0?{messageId:g}:{},...h!==void 0?{parentToolCallId:h}:{},...Object.keys(m).length>0?{extra:{...m}}:{}}))}}function ys(t){if(!We(t))return null;let e=ks(t.inputTokens),n=ks(t.outputTokens),r=ks(t.cacheReadTokens),s={};e!==void 0&&(s.promptTokens=e),n!==void 0&&(s.completionTokens=n),r!==void 0&&(s.cachedTokens=r);let o={};for(let[c,u]of Object.entries(t))c==="inputTokens"||c==="outputTokens"||c==="cacheReadTokens"||u!=null&&(o[c]=u);return Object.keys(o).length>0&&(s.extra=o),Object.keys(s).length>0?s:null}function jo(t,e,n,r,s){if(!e)return null;let o=t.get(e);if(o?.emitted)return null;let c=n||o?.name||"Tool",u=s??ku(c);if(t.set(e,{name:c,input:r,emitted:true,title:u}),Jo(c)==="todowrite"){let p=Su(r);if(p)return p}let{title:l,kind:i,content:a,locations:d}=xu(c,r);return {sessionUpdate:"tool_call",toolCallId:e,title:u??l,toolName:c,kind:i,status:"pending",rawInput:r,content:a,locations:d}}function ku(t){if(!t.startsWith("mcp__"))return;let e=t.slice(5),n=e.indexOf("__");return n>0&&n+2<e.length?`${e.slice(0,n)} ${e.slice(n+2)} (MCP)`:void 0}function vu(t){let e=ve(t);if(e?.kind!=="mcp_tool")return;let n=A(e,"serverName"),r=A(e,"toolName");return n&&r?`${n} ${r} (MCP)`:void 0}function bs(t){return t?.title??t?.name??""}function Su(t){let e=t.todos;if(!Array.isArray(e))return null;let n=e.flatMap(r=>{let s=ve(r);if(!s)return [];let o=A(s,"content"),c=Cu(A(s,"status")),u=Eu(A(s,"priority"));return o?[{content:o,status:c,priority:u}]:[]});return n.length>0?{sessionUpdate:"plan",entries:n}:null}function xu(t,e){let n=bu[Jo(t)]||"other",r=A(e,"file_path")||A(e,"path")||A(e,"notebook_path"),s=A(e,"command"),o=A(e,"url"),c=A(e,"skill"),u=A(e,"subagent_type"),l=r||s||o||c||u;return {title:l?`${t} ${l}`:t,kind:n,content:Object.keys(e).length>0?Wn(e):[],locations:r?[{path:r}]:[]}}function _s(t){return {sessionUpdate:"agent_message_chunk",content:{type:"text",text:t}}}function ws(t,e,n){for(let r of n){let s=t[r];s!=null&&(e[r]=s);}}function Wn(t){let e=Ru(t);return e?[{type:"content",content:{type:"text",text:e}}]:[]}function Ru(t){if(typeof t=="string")return t;if(t==null)return "";try{return JSON.stringify(t)}catch{return String(t)}}function ks(t){return typeof t=="number"&&Number.isFinite(t)?t:void 0}function We(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function ve(t){return We(t)?t:null}function A(t,e){let n=t[e];return typeof n=="string"?n:""}function Jo(t){return t.replace(/[-_\s]/g,"").toLowerCase()}function Cu(t){return t==="in_progress"||t==="completed"?t:"pending"}function Eu(t){return t==="high"||t==="low"?t:"medium"}function Ue(t){switch(t){case "claude":return Fn();case "codex":return Nn();case "gemini":return Kn();case "qwen":return qn();case "kimi":return ms();case "opencode":return fs();case "droid":return Bn();case "pi":return zn();case "prime-agent":return Hn();case "dsh":return Jn();case "zcode":return Yn();case "antigravity":return $n();default:return ()=>null}}function Tu(t,e){let n=e.trim();return n?Ue(t)(n):null}function Pu(t,e){let n=[],r=e.split(`
25
+ `),s=Ue(t);for(let o of r){let c=o.trim();if(!c)continue;let u=s(c);u&&n.push(...u);}return n}var ap=util.promisify(child_process.execFile),xe="SKILL.md",lp=fe.join(os$1.homedir(),".cache","evolve","skills"),Os=["skills","skills/.curated","skills/.experimental","skills/.system",".claude/skills"],cp=/^([A-Za-z0-9._-]+)\/([A-Za-z0-9._-]+)(?:@(.+))?$/,dp=/^[0-9a-f]{40}$/,Ts=2e3,Ps=64*1024*1024,pe=class extends Error{constructor(e){super(e),this.name="SkillRefError";}},re=class extends Error{constructor(e){super(e),this.name="SkillResolveError";}};function up(t){return t==="~"?os$1.homedir():t.startsWith("~/")?fe.join(os$1.homedir(),t.slice(2)):t}function pp(t){let e=t.indexOf("@");if(e===-1)return {base:t};let n=t.slice(e+1);if(!n)throw new pe(`Empty @ref in skill reference segment: ${JSON.stringify(t)}`);return {base:t.slice(0,e),gitRef:n}}var gp=/^[A-Za-z0-9._-]+$/;function Qn(t,e,n){if(!gp.test(t))throw new pe(`Cannot parse skill reference ${JSON.stringify(n)}: ${e} ${JSON.stringify(t)} may only contain letters, digits, ".", "_" and "-".`);return t}function Ms(t){let e=String(t??"").trim();if(!e)throw new pe("Skill reference cannot be empty.");if(e.startsWith("upload:")){let o=e.slice(7);if(!o)throw new pe(`Skill upload reference ${JSON.stringify(e)} names no upload id.`);return {kind:"upload",id:o,raw:e}}if(e.startsWith("name:")){let o=e.slice(5);if(!o)throw new pe(`Skill name reference ${JSON.stringify(e)} names no skill.`);return Qn(o,"skill name",e),{kind:"name",name:o,raw:e}}if(e.startsWith("./")||e.startsWith("../")||e.startsWith("/")||e.startsWith("~"))return {kind:"local",path:up(e),raw:e};let n=e.match(/^(?:https?:\/\/)?(?:www\.)?skills\.sh\/(.+)$/);if(n){let c=n[1].replace(/\/+$/,"").split("/").filter(Boolean);if(c.length<2||c.length>3)throw new pe(`Cannot parse skill reference ${JSON.stringify(e)}: expected skills.sh/<owner>/<repo> or skills.sh/<owner>/<repo>/<skill>, optionally @ref.`);let{base:u,gitRef:l}=pp(c[c.length-1]);c[c.length-1]=u;let[i,a,d]=c;return Qn(i,"owner",e),Qn(a,"repo",e),d!==void 0&&Qn(d,"skill name",e),{kind:"git",host:"github.com",org:i,repo:a,...l?{gitRef:l}:{},...d?{skillName:d}:{},viaSkillsSh:true,raw:e}}let r=e.match(/^https?:\/\/([^/]+)\/(.+)$/);if(r){let o=r[1],c=r[2].replace(/\/+$/,"").split("/").filter(Boolean);if(c.length<2)throw new pe(`Git URL must have at least org/name in the path: ${JSON.stringify(e)}`);let u=c[0],l=c[1].replace(/\.git$/,""),i,a;return c.length>=4&&c[2]==="tree"&&(i=c[3],c.length>4&&(a=c.slice(4).join("/"))),{kind:"git",host:o,org:u,repo:l,...i?{gitRef:i}:{},...a?{subdir:a}:{},viaSkillsSh:false,raw:e}}let s=e.match(cp);if(s)return {kind:"git",host:"github.com",org:s[1],repo:s[2],...s[3]?{gitRef:s[3]}:{},viaSkillsSh:false,raw:e};throw new pe(`Cannot parse skill reference ${JSON.stringify(e)}. Expected skills.sh/<owner>/<repo>[/<skill>], org/repo[@ref], an https git URL, or a local folder path (prefix relative paths with './').`)}function Ds(t){return `https://${t.host}/${t.org}/${t.repo}.git`}function Ze(t){return `https://${t.host}/${t.org}/${t.repo}`}async function Se(t,e){try{let{stdout:n}=await ap("git",t,{cwd:e.cwd,timeout:e.timeoutMs,env:e.gitEnv??process.env,maxBuffer:16777216});return n}catch(n){let r=n,s=(r.stderr||r.message||"").trim();throw new re(`git ${t[0]} failed${r.killed?" (timed out)":""}: ${s}`)}}async function Us(t,e={}){if(t.gitRef&&dp.test(t.gitRef))return t.gitRef;let n=t.gitRef??"HEAD",s=(await Se(["ls-remote",Ds(t),n,`${n}^{}`],{timeoutMs:e.lsRemoteTimeoutMs??3e4,gitEnv:e.gitEnv})).trim().split(`
26
+ `).filter(u=>u.length>0).map(u=>{let[l,i]=u.split(" ");return {sha:l,name:i}});if(s.length===0||!s[0].sha)throw new re(`No matching ref ${JSON.stringify(n)} found in ${Ze(t)}`);let o=s[0];return (s.find(u=>u.name===`${o.name}^{}`)??o).sha}async function mp(t,e={}){let n=Ms(t);if(n.kind!=="git")return {ref:n.raw};let r=await Us(n,e),s;return n.viaSkillsSh?s=`skills.sh/${n.org}/${n.repo}${n.skillName?`/${n.skillName}`:""}@${r}`:n.subdir!==void 0||n.raw.includes("://")?s=`https://${n.host}/${n.org}/${n.repo}/tree/${r}${n.subdir?`/${n.subdir}`:""}`:s=`${n.org}/${n.repo}@${r}`,{ref:s,gitUrl:Ze(n),gitCommit:r}}async function As(t){let e=[],n=async s=>{let o=s===""?t:fe.join(t,s),c=await promises.readdir(o,{withFileTypes:true});for(let u of c){let l=s===""?u.name:`${s}/${u.name}`;u.isDirectory()?await n(l):u.isFile()&&e.push(l);}};await n(""),e.sort();let r=crypto.createHash("sha256");for(let s of e){let o=crypto.createHash("sha256").update(await promises.readFile(fe.join(t,s))).digest("hex");r.update(s),r.update("\0"),r.update(o),r.update("\0");}return `sha256:${r.digest("hex")}`}async function Et(t){try{return (await promises.stat(t)).isFile()}catch{return false}}async function $s(t){try{return (await promises.stat(t)).isDirectory()}catch{return false}}async function na(t,e){if(!await $s(t))throw new re(`Skill path does not exist or is not a directory: ${e}`);if(await Et(fe.join(t,xe)))return [t];let r=(await promises.readdir(t,{withFileTypes:true})).filter(c=>c.isDirectory()&&!c.name.startsWith(".")).map(c=>c.name).sort(),s=[],o=[];for(let c of r)await Et(fe.join(t,c,xe))?o.push(fe.join(t,c)):s.push(c);if(s.length>0)throw new re(`Skill root ${e} contains child directories without ${xe}: ${s.join(", ")}`);if(o.length===0)throw new re(`Skill path ${e} must be a skill directory containing ${xe}, or a root whose immediate child directories each contain ${xe}.`);return o}async function fp(t){let e=new Map;await Et(fe.join(t,xe))&&e.set(fe.basename(t),t);for(let n of Os){let r=fe.join(t,n);if(!await $s(r))continue;let s=await promises.readdir(r,{withFileTypes:true});for(let o of s.sort((c,u)=>c.name<u.name?-1:1)){if(!o.isDirectory()||o.name.startsWith("."))continue;let c=fe.join(r,o.name);await Et(fe.join(c,xe))&&e.set(o.name,c);}}return Array.from(e,([n,r])=>({dir:r,name:n}))}function hp(t){return t.cacheDir??process.env.EVOLVE_SKILLS_CACHE??lp}async function yp(t,e,n){let r=fe.join(hp(n),t.host,t.org,t.repo,e),s=fe.join(r,t.repo),o=fe.join(r,".evolve-complete");if(await Et(o)&&await $s(s))return s;await promises.mkdir(fe.dirname(r),{recursive:true});let c=await promises.mkdtemp(`${r}.tmp-`),u=fe.join(c,t.repo),l=n.checkoutTimeoutMs??12e4,i={cwd:u,timeoutMs:l,gitEnv:n.gitEnv};try{await promises.mkdir(u),await Se(["init","--quiet"],i),await Se(["remote","add","origin",Ds(t)],i),t.subdir?(await Se(["sparse-checkout","init","--cone"],i),await Se(["sparse-checkout","set",t.subdir],i)):(await Se(["sparse-checkout","init","--cone"],i),await Se(["sparse-checkout","set",...Os],i)),await Se(["fetch","--quiet","--depth=1","origin",e],i),await Se(["checkout","--quiet","FETCH_HEAD"],i),await promises.rm(fe.join(u,".git"),{recursive:!0,force:!0}),await promises.writeFile(fe.join(c,".evolve-complete"),""),await promises.rm(r,{recursive:!0,force:!0});try{await promises.rename(c,r);}catch{await promises.rm(c,{recursive:!0,force:!0});}return s}catch(a){throw await promises.rm(c,{recursive:true,force:true}),a}}async function ra(t,e){let n=0,r=0,s=async o=>{let c=await promises.readdir(o,{withFileTypes:true});for(let u of c){let l=fe.join(o,u.name);if(u.isDirectory())await s(l);else if(u.isFile()&&(n+=1,r+=(await promises.stat(l)).size,n>Ts||r>Ps))throw new re(`Skill ${e} exceeds the size ceiling (${Ts} files / ${Ps} bytes) \u2014 a skill is instructions, not a dataset.`)}};await s(t);}async function Ls(t,e={}){let n=new Map;for(let r of t){let s=Ms(r);if(s.kind==="upload")throw new re(`Skill reference ${JSON.stringify(s.raw)} is a platform upload handle; only the hosted platform can resolve it. Use a skills.sh/git reference or a local folder here.`);if(s.kind==="name")throw new re(`Skill reference ${JSON.stringify(s.raw)} is a platform skill name \u2014 a moving pointer only the hosted platform can resolve (server-side, at job create). Use a skills.sh/git reference or a local folder here.`);if(s.kind==="local"){let l=await na(s.path,s.raw);for(let i of l)await ra(i,s.raw),n.set(fe.basename(i),{name:fe.basename(i),dir:i,source:s.raw,digest:await As(i)});continue}let o=await Us(s,e),c=await yp(s,o,e),u;if(s.subdir)u=(await na(fe.join(c,s.subdir),`${s.raw} (${s.subdir})`)).map(i=>({dir:i,name:fe.basename(i)}));else if(u=await fp(c),u.length===0)throw new re(`No skills found in ${Ze(s)}@${o.slice(0,12)}: expected ${xe} at the repo root or under ${Os.join(", ")}.`);if(s.skillName){let l=u.filter(i=>i.name===s.skillName);if(l.length===0)throw new re(`Skill ${JSON.stringify(s.skillName)} not found in ${Ze(s)}@${o.slice(0,12)}. Available: ${u.map(i=>i.name).sort().join(", ")||"(none)"}`);u=l;}for(let{dir:l,name:i}of u)await ra(l,s.raw),n.set(i,{name:i,dir:l,source:s.raw,gitUrl:Ze(s),gitCommit:o,digest:await As(l)});}return Array.from(n.values()).sort((r,s)=>r.name<s.name?-1:r.name>s.name?1:0)}function er(t){return `'${t.replace(/'/g,"'\\''")}'`}async function Fs(t,e,n){if(e.length===0)return;let{tarGzipDirectory:r}=await Promise.resolve().then(()=>(Cs(),Rs));await t.files.makeDir(n);for(let s of e){let o=await r(s.dir),c=`${n}/.evolve-skill-${s.name}.tgz`,u=`${n}/${s.name}`;await t.files.write(c,o),await t.commands.run(`mkdir -p ${er(u)} && tar -xzf ${er(c)} -C ${er(u)} && rm -f ${er(c)}`,{timeoutMs:6e4});}}function me(t){return t!==null&&typeof t=="object"&&"safeParse"in t&&typeof t.safeParse=="function"}function Xe(t){return JSON.stringify(bp__default.default(t,{target:"jsonSchema7"}),null,2)}function Qe(t){return JSON.stringify(t,null,2)}function sa(t,e=false){let n={};function r(s,o){for(let c of he__namespace.readdirSync(s)){let u=fe__namespace.join(s,c),l=o?`${o}/${c}`:c;he__namespace.statSync(u).isDirectory()?e&&r(u,l):n[l]=he__namespace.readFileSync(u);}}return r(t,""),n}function ia(t,e){let n=fe__namespace.resolve(t),r=n.endsWith(fe__namespace.sep)?n:n+fe__namespace.sep;for(let[s,o]of Object.entries(e)){let c=fe__namespace.resolve(n,s);if(!c.startsWith(r))throw new Error(`Unsafe file path escapes target directory: ${s}`);let u=fe__namespace.dirname(c);he__namespace.mkdirSync(u,{recursive:true});let l;o instanceof ArrayBuffer||o instanceof Uint8Array?l=Buffer.from(o):l=o,he__namespace.writeFileSync(c,l);}}Tt();function kp(t){return `e2b_${Buffer.from(t,"utf8").toString("hex")}`}var ga=new WeakSet;function Ks(t){return ga.add(t),t}function tt(t){return ga.has(t)}function ua(t,e){return new Error(`${B} is set but ${t} failed to load.
27
+ Try installing: ${e}`)}function pa(t){return t.message?.includes("Cannot find module")||t.message?.includes("MODULE_NOT_FOUND")}function Vs(t,e){if(!e||e.timeoutMs===void 0&&e.resources===void 0)return t;let n=t.create.bind(t);return t.create=(r={})=>n({...e.timeoutMs!==void 0?{timeoutMs:e.timeoutMs}:{},...e.resources!==void 0?{resources:e.resources}:{},...r}),t}var vp={attempts:3,baseDelayMs:1e3,maxDelayMs:3e4};function Sp(t){if(!(t instanceof Error))return;let e=t,n=typeof e.status=="number"?e.status:e.statusCode;if(typeof n=="number"){if(n!==429&&n!==503)return;if(typeof e.retryAfterSec=="number")return {retryAfterSec:e.retryAfterSec};let r=e.headers,s=typeof r?.get=="function"?r.get("retry-after"):r?.["retry-after"];return {retryAfterSec:Ns(s)}}if(e.name==="RateLimitError")return {};if(e.name==="SandboxError"&&e.message.startsWith("503:"))return {}}function Gs(t){return oa(t,Sp,vp)}async function At(t,e="e2b",n){let r=t||process.env[B];if(!r)throw new Error(`${B} is required for Evolve-managed sandbox features`);if(!Ke.includes(e))throw new Error(`Unknown managed sandbox provider "${e}". Supported: ${Ke.join(", ")}`);if(e==="daytona")try{let{createDaytonaProvider:s}=await import('@evolvingmachines/daytona');return Vs(Ks(s({apiKey:r,apiUrl:bt("daytona"),managedToolboxUrl:Gi(),retryCreateRequest:Gs})),n)}catch(s){let o=s;throw pa(o)?ua("@evolvingmachines/daytona","npm install @evolvingmachines/daytona"):o}if(e==="modal"){let{ManagedModalProvider:s}=await Promise.resolve().then(()=>(da(),ca));return Vs(Ks(new s({apiKey:r,baseUrl:bt("modal"),retryCreateRequest:Gs})),n)}try{let{createE2BProvider:s}=await import('@evolvingmachines/e2b');return Vs(Ks(s({apiKey:kp(r),apiUrl:Ur(),retryCreateRequest:Gs})),n)}catch(s){let o=s;throw pa(o)?ua("@evolvingmachines/e2b","npm install @evolvingmachines/evolve"):o}}function xp(t="e2b",e){let n=typeof e=="string"?{apiKey:e}:e??{},{apiKey:r,...s}=n;return At(r,t,s)}async function ir(){let t=process.env[sn];if(t)try{let{createE2BProvider:o}=await import('@evolvingmachines/e2b');return process.env.E2B_API_URL===Ur()&&delete process.env.E2B_API_URL,o({apiKey:t})}catch(o){let c=o;throw c.message?.includes("Cannot find module")||c.message?.includes("MODULE_NOT_FOUND")?new Error(`${sn} is set but @evolvingmachines/e2b failed to load.
28
+ Try reinstalling: npm install @evolvingmachines/evolve`):c}let e=process.env[on];if(e)try{let{createDaytonaProvider:o}=await import('@evolvingmachines/daytona');return o({apiKey:e})}catch(o){let c=o;throw c.message?.includes("Cannot find module")||c.message?.includes("MODULE_NOT_FOUND")?new Error(`${on} is set but @evolvingmachines/daytona failed to load.
29
+ Try installing: npm install @evolvingmachines/daytona`):c}let n=process.env[an],r=process.env[$r];if(n&&r)try{let{createModalProvider:o}=await import('@evolvingmachines/modal');return o({tokenId:n,tokenSecret:r})}catch(o){let c=o;throw c.message?.includes("Cannot find module")||c.message?.includes("MODULE_NOT_FOUND")?new Error(`${an} is set but @evolvingmachines/modal failed to load.
30
+ Try installing: npm install @evolvingmachines/modal`):c}let s=process.env[B];if(s)return At(s);throw new Error(`No sandbox provider configured. Either:
31
+ 1. Set ${B} environment variable (recommended, get key at https://dashboard.evolvingmachines.ai)
32
+ 2. Set ${sn} environment variable (direct E2B access, get key at https://e2b.dev)
33
+ 3. Set ${on} environment variable (direct Daytona access, get key at https://app.daytona.io)
34
+ 4. Set ${an} and ${$r} environment variables (direct Modal access, get tokens at https://modal.com/settings/tokens)
35
+ 5. Pass sandbox explicitly: .withSandbox(provider)`)}function Rp(t){return new Promise(e=>setTimeout(e,t))}async function ae(t,e,n=0){let r=Cp(e),s=e?.onItemRetry,o=null,c=0,u=r.backoffMs;for(;c<r.maxAttempts;){if(c++,o=await t(c),!r.retryOn(o))return o;if(c>=r.maxAttempts)break;if(s){let l=o.error??"Unknown error";s(n,c,l);}await Rp(u),u*=r.backoffMultiplier;}return o}function Cp(t){return {maxAttempts:t?.maxAttempts??3,backoffMs:t?.backoffMs??1e3,backoffMultiplier:t?.backoffMultiplier??2,retryOn:t?.retryOn??(e=>e.status==="error")}}var ma=`## FILESYSTEM INSTRUCTIONS:
31
36
 
32
37
  You are running in a sandbox environment.
33
38
 
@@ -60,7 +65,7 @@ Examples:
60
65
  - "Generate a bar chart" \u2192 \`output/revenue_chart.png\`
61
66
  - "Write a Python script" \u2192 \`output/parser.py\`
62
67
  - "Convert this to JSON" \u2192 \`output/data.json\`
63
- `;var Gi=`## FILESYSTEM INSTRUCTIONS:
68
+ `;var fa=`## FILESYSTEM INSTRUCTIONS:
64
69
 
65
70
  You are running in a sandbox environment.
66
71
 
@@ -94,9 +99,9 @@ Examples:
94
99
  - "Generate a bar chart" \u2192 \`output/revenue_chart.png\`
95
100
  - "Write a Python script" \u2192 \`output/parser.py\`
96
101
  - "Convert this to JSON" \u2192 \`output/data.json\`
97
- `;var qi=`## SYSTEM PROMPT
102
+ `;var ha=`## SYSTEM PROMPT
98
103
 
99
- {{systemPrompt}}`;var zi=`## STRUCTURED OUTPUT
104
+ {{systemPrompt}}`;var ya=`## STRUCTURED OUTPUT
100
105
 
101
106
  Your final result MUST be saved to \`output/result.json\` following this schema:
102
107
 
@@ -114,13 +119,13 @@ You are free to:
114
119
  But your final \`output/result.json\` MUST conform to the schema above.
115
120
 
116
121
  ### OUTPUT RESULTS (DELIVERABLES) MUST BE WRITTEN to \`output/result.json\` as files.
117
- ### Never just state results as text.`;var Hi=`## BROWSER AUTOMATION
122
+ ### Never just state results as text.`;var ba=`## BROWSER AUTOMATION
118
123
 
119
124
  Actionbook is preconfigured for remote browser automation in this environment. When browser automation is needed, start sessions with \`actionbook browser start --session s1\`, then use normal Actionbook browser commands. Do not override the configured browser mode or browser endpoint unless the user explicitly asks.
120
- `;var Wi=`## Browser Automation
125
+ `;var _a=`## Browser Automation
121
126
 
122
127
  The agent-browser CDP connection is already configured. Use normal \`agent-browser\` commands when browser automation is needed.
123
- `;var Yi=`### 1. YOUR ROLE: BEST OF N JUDGE
128
+ `;var wa=`### 1. YOUR ROLE: BEST OF N JUDGE
124
129
 
125
130
  You are a judge. {{candidateCount}} AI workers attempted the same task independently. Your job is to analyze their solution attempts and pick the best one based on the evaluation criteria below.
126
131
 
@@ -150,7 +155,7 @@ You must judge their work based on:
150
155
  5. Pick the best candidate (0-indexed)
151
156
 
152
157
  **IMPORTANT:** Be thorough. Do not skip steps. Your judgment must be evidence-based \u2014 cite specific files, outputs, or discrepancies to justify your decision.
153
- `;var Xi=`### 1. YOUR ROLE: OUTPUT VERIFIER
158
+ `;var ka=`### 1. YOUR ROLE: OUTPUT VERIFIER
154
159
 
155
160
  You are a quality verifier. An AI worker produced output for a task. Your job is to verify whether the output meets the specified quality criteria.
156
161
 
@@ -183,14 +188,14 @@ The output must satisfy:
183
188
  **IMPORTANT:** Be thorough and fair. Cite specific evidence. If the output generally achieves the goal with minor issues, consider passing. Only fail if there are significant problems that violate the criteria.
184
189
 
185
190
  If failing, provide specific, actionable feedback explaining what needs to be fixed.
186
- `;var Qi=`### CONTEXT STRUCTURE
191
+ `;var va=`### CONTEXT STRUCTURE
187
192
 
188
193
  \`\`\`
189
194
  {{fileTree}}
190
195
  \`\`\`
191
196
 
192
197
  Examine all files within each item folder before producing your output.
193
- `;var Zi="Evaluate the candidates and select the best one. You MUST save your decision to the file `output/result.json`.\n";var eo="Verify the worker output against the criteria. You MUST save your decision to the file `output/result.json`.\n";var to=`{{originalPrompt}}
198
+ `;var Sa="Evaluate the candidates and select the best one. You MUST save your decision to the file `output/result.json`.\n";var xa="Verify the worker output against the criteria. You MUST save your decision to the file `output/result.json`.\n";var Ra=`{{originalPrompt}}
194
199
 
195
200
  ## IMPORTANT: Previous Attempt Failed Verification
196
201
 
@@ -199,37 +204,37 @@ Your previous attempt did not pass quality verification. Please address this fee
199
204
  {{feedback}}
200
205
 
201
206
  Make sure your output addresses all the feedback points above.
202
- `;var no=Vi,ro=Gi,so=qi,io=zi,Jr=Hi,oo=Wi,Kr=Yi,ao=Zi,Vr=Xi,lo=eo,co=Qi,Gr=to;function de(t,e){return t.replace(/\{\{(\w+)\}\}/g,(n,r)=>Object.prototype.hasOwnProperty.call(e,r)?e[r]:n)}function qr(t){let e=t.mode==="swe"?ro:no,n=de(e,{workingDir:t.workingDir}).trim();if(t.browserPrompt&&(n+=`
207
+ `;var Ca=ma,Ea=fa,Ta=ha,Pa=ya,zs=ba,Aa=_a,Hs=wa,Ia=Sa,qs=ka,Oa=xa,Ma=va,Ws=Ra;function Re(t,e){return t.replace(/\{\{(\w+)\}\}/g,(n,r)=>Object.prototype.hasOwnProperty.call(e,r)?e[r]:n)}function Ys(t){let e=t.mode==="swe"?Ea:Ca,n=Re(e,{workingDir:t.workingDir}).trim();if(t.browserPrompt&&(n+=`
203
208
 
204
209
 
205
210
  ${t.browserPrompt.trim()}`),t.systemPrompt&&(n+=`
206
211
 
207
212
 
208
- ${de(so,{systemPrompt:t.systemPrompt}).trim()}`),t.schema){let r=Q(t.schema)?Pe(t.schema):Ae(t.schema);n+=`
213
+ ${Re(Ta,{systemPrompt:t.systemPrompt}).trim()}`),t.schema){let r=me(t.schema)?Xe(t.schema):Qe(t.schema);n+=`
209
214
 
210
215
 
211
- ${de(io,{schema:r}).trim()}`;}return n}function mn(t){let e=[...new Set(Object.keys(t).map(c=>c.split("/")[0]))].sort((c,i)=>c==="worker_task"?-1:i==="worker_task"?1:c.localeCompare(i));if(!e.length)return `context/
212
- (empty)`;let n="worker_task/system_prompt.txt"in t,r="worker_task/schema.json"in t,s=Object.keys(t).some(c=>c.startsWith("worker_task/input/")),a=[];e.forEach((c,i)=>{let o=i===e.length-1,l=o?"\u2514\u2500\u2500 ":"\u251C\u2500\u2500 ",p=o?" ":"\u2502 ";if(c==="worker_task"){a.push({line:`${l}${c}/`,comment:"task given to worker"});let g=[];n&&g.push({name:"system_prompt.txt",comment:"worker system prompt"}),g.push({name:"user_prompt.txt",comment:"worker task prompt"}),r&&g.push({name:"schema.json",comment:"expected output schema"}),s&&g.push({name:"input/",comment:"worker input files"}),g.forEach((m,h)=>{let y=h===g.length-1?"\u2514\u2500\u2500 ":"\u251C\u2500\u2500 ";a.push({line:`${p}${y}${m.name}`,comment:m.comment});});}else if(c.startsWith("candidate_")){let g=c.replace("candidate_","");a.push({line:`${l}${c}/`,comment:`worker ${g} solution`});}else if(c==="worker_output")a.push({line:`${l}${c}/`,comment:"output to verify"});else if(c.startsWith("item_")){let g=c.replace("item_","");a.push({line:`${l}${c}/`,comment:`input ${g}`});}else a.push({line:`${l}${c}/`,comment:""});});let d=Math.max(...a.map(c=>c.line.length)),u=["context/"];for(let c of a)if(c.comment){let i=" ".repeat(d-c.line.length+3);u.push(`${c.line}${i}# ${c.comment}`);}else u.push(c.line);return u.join(`
213
- `)}var uo=Z.join(os$1.homedir(),zs),xd=/^[A-Za-z0-9_-]{1,32}$/,lt=class{tag;timestamp;provider;agent;model;reasoningEffort;sandboxId;org;apiKey;dashboardUrl;localFilePath;observability;parser;isClosed=false;metaWritten=false;warnedKeys=new Set;warnedRefusals=new Set;localQueue=Promise.resolve();dirReady=promises.mkdir(uo,{recursive:true}).catch(()=>{});eventBuffer=[];dashboardQueue=Promise.resolve();flushTimer;constructor(e){this.validateConfig(e),this.provider=e.provider,this.agent=e.agent,this.model=e.model,this.reasoningEffort=e.reasoningEffort,this.sandboxId=e.sandboxId,this.org=e.org,this.apiKey=e.apiKey,this.dashboardUrl=Se(),this.observability=e.observability,this.tag=e.tag||`${e.tagPrefix||"evolve"}-${crypto.randomBytes(8).toString("hex")}`,this.timestamp=new Date().toISOString();let n=this.timestamp.replace(/[:.]/g,"-"),r=`${this.tag}_${this.provider}_${this.sandboxId}_${this.agent}_${n}.jsonl`;this.localFilePath=Z.join(uo,r),this.parser=ye(e.agent);}getTag(){return this.tag}getTimestamp(){return this.timestamp}writePrompt(e){this.isClosed||this.write({_prompt:{text:e}});}writeEventParsed(e,n){if(!this.isClosed&&(this.writeLocalLine(e),this.apiKey&&n))for(let r of n)this.bufferForDashboard(r);}writeEvent(e){if(!this.isClosed&&(this.writeLocalLine(e),this.apiKey)){let n=this.parser(e);if(n)for(let r of n)this.bufferForDashboard(r);}}async flush(){await this.localQueue,await this.dashboardQueue,this.apiKey&&this.eventBuffer.length>0&&(this.flushDashboard(),await this.dashboardQueue);}async close(){this.isClosed||(this.flushTimer&&(clearTimeout(this.flushTimer),this.flushTimer=void 0),this.write({_sessionEnd:{timestamp:new Date().toISOString()}}),this.isClosed=true,await this.flush());}writeLocalLine(e){this.metaWritten||this.writeMeta();let n=e.endsWith(`
216
+ ${Re(Pa,{schema:r}).trim()}`;}return n}function or(t){let e=[...new Set(Object.keys(t).map(l=>l.split("/")[0]))].sort((l,i)=>l==="worker_task"?-1:i==="worker_task"?1:l.localeCompare(i));if(!e.length)return `context/
217
+ (empty)`;let n="worker_task/system_prompt.txt"in t,r="worker_task/schema.json"in t,s=Object.keys(t).some(l=>l.startsWith("worker_task/input/")),o=[];e.forEach((l,i)=>{let a=i===e.length-1,d=a?"\u2514\u2500\u2500 ":"\u251C\u2500\u2500 ",p=a?" ":"\u2502 ";if(l==="worker_task"){o.push({line:`${d}${l}/`,comment:"task given to worker"});let g=[];n&&g.push({name:"system_prompt.txt",comment:"worker system prompt"}),g.push({name:"user_prompt.txt",comment:"worker task prompt"}),r&&g.push({name:"schema.json",comment:"expected output schema"}),s&&g.push({name:"input/",comment:"worker input files"}),g.forEach((m,f)=>{let b=f===g.length-1?"\u2514\u2500\u2500 ":"\u251C\u2500\u2500 ";o.push({line:`${p}${b}${m.name}`,comment:m.comment});});}else if(l.startsWith("candidate_")){let g=l.replace("candidate_","");o.push({line:`${d}${l}/`,comment:`worker ${g} solution`});}else if(l==="worker_output")o.push({line:`${d}${l}/`,comment:"output to verify"});else if(l.startsWith("item_")){let g=l.replace("item_","");o.push({line:`${d}${l}/`,comment:`input ${g}`});}else o.push({line:`${d}${l}/`,comment:""});});let c=Math.max(...o.map(l=>l.line.length)),u=["context/"];for(let l of o)if(l.comment){let i=" ".repeat(c-l.line.length+3);u.push(`${l.line}${i}# ${l.comment}`);}else u.push(l.line);return u.join(`
218
+ `)}var Da=fe.join(os$1.homedir(),Wi),Kp=/^[A-Za-z0-9_-]{1,32}$/,It=class{tag;timestamp;provider;agent;model;reasoningEffort;sandboxId;org;apiKey;dashboardUrl;localFilePath;observability;parser;isClosed=false;metaWritten=false;warnedKeys=new Set;warnedRefusals=new Set;localQueue=Promise.resolve();dirReady=promises.mkdir(Da,{recursive:true}).catch(()=>{});eventBuffer=[];dashboardQueue=Promise.resolve();flushTimer;constructor(e){this.validateConfig(e),this.provider=e.provider,this.agent=e.agent,this.model=e.model,this.reasoningEffort=e.reasoningEffort,this.sandboxId=e.sandboxId,this.org=e.org,this.apiKey=e.apiKey,this.dashboardUrl=Je(),this.observability=e.observability,this.tag=e.tag||`${e.tagPrefix||"evolve"}-${crypto.randomBytes(8).toString("hex")}`,this.timestamp=new Date().toISOString();let n=this.timestamp.replace(/[:.]/g,"-"),r=`${this.tag}_${this.provider}_${this.sandboxId}_${this.agent}_${n}.jsonl`;this.localFilePath=fe.join(Da,r),this.parser=Ue(e.agent);}getTag(){return this.tag}getTimestamp(){return this.timestamp}writePrompt(e){this.isClosed||this.write({_prompt:{text:e}});}writeEventParsed(e,n){if(!this.isClosed&&(this.writeLocalLine(e),this.apiKey&&n))for(let r of n)this.bufferForDashboard(r);}writeEvent(e){if(!this.isClosed&&(this.writeLocalLine(e),this.apiKey)){let n=this.parser(e);if(n)for(let r of n)this.bufferForDashboard(r);}}async flush(){await this.localQueue,await this.dashboardQueue,this.apiKey&&this.eventBuffer.length>0&&(this.flushDashboard(),await this.dashboardQueue);}async close(){this.isClosed||(this.flushTimer&&(clearTimeout(this.flushTimer),this.flushTimer=void 0),this.write({_sessionEnd:{timestamp:new Date().toISOString()}}),this.isClosed=true,await this.flush());}writeLocalLine(e){this.metaWritten||this.writeMeta();let n=e.endsWith(`
214
219
  `)?e:e+`
215
220
  `;this.localQueue=this.localQueue.then(()=>this.appendLocal(n)).catch(()=>{});}bufferForDashboard(e){this.eventBuffer.push(e),this.scheduleFlush();}write(e){this.metaWritten||this.writeMeta();let n=JSON.stringify(e)+`
216
221
  `;this.localQueue=this.localQueue.then(()=>this.appendLocal(n)).catch(()=>{}),this.apiKey&&(this.eventBuffer.push(e),this.scheduleFlush());}writeMeta(){let e={_meta:{tag:this.tag,provider:this.provider,agent:this.agent,model:this.model,sandbox_id:this.sandboxId,timestamp:this.timestamp,...this.annotations()}},n=JSON.stringify(e)+`
217
- `;this.localQueue=this.localQueue.then(()=>this.appendLocal(n)).catch(()=>{}),this.apiKey&&this.eventBuffer.push(e),this.metaWritten=true;}async appendLocal(e){try{await this.dirReady,await promises.appendFile(this.localFilePath,e,"utf-8");}catch(n){console.debug("[SessionLogger] Local write failed:",n);}}scheduleFlush(){if(this.eventBuffer.length>=Hs){this.flushDashboard();return}!this.flushTimer&&!this.isClosed&&(this.flushTimer=setTimeout(()=>{this.flushTimer=void 0,this.flushDashboard();},Ws));}flushDashboard(){if(!this.apiKey||this.eventBuffer.length===0)return;let e=this.eventBuffer.splice(0);this.dashboardQueue=this.dashboardQueue.then(()=>this.sendToDashboard(e)).catch(()=>{});}async sendToDashboard(e){let n={tag:this.tag,provider:this.provider,agent:this.agent,model:this.model,reasoningEffort:this.reasoningEffort!==void 0&&xd.test(this.reasoningEffort)?this.reasoningEffort:null,sandboxId:this.sandboxId,...this.org?{org:this.org}:{},timestamp:this.timestamp,...this.annotations(),events:e};for(let r=1;r<=Bt;r++)try{let s=await fetch(`${this.dashboardUrl}/api/sessions/ingest`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify(n),signal:AbortSignal.timeout(1e4)});if(s.ok)return;if(s.status===429||s.status===401||s.status>=500){if(r===Bt){console.debug(`[SessionLogger] Dashboard ${s.status} after ${r} retries, requeueing`),this.requeueEvents(e);return}await this.delay(Hn*r);continue}await this.warnRefusal(s,e.length);return}catch(s){r===Bt?(console.debug("[SessionLogger] Dashboard sync failed after retries, requeueing:",s),this.requeueEvents(e)):await this.delay(Hn*r);}}requeueEvents(e){this.eventBuffer.unshift(...e);}async warnRefusal(e,n){let r="unknown_error",s=e.statusText;try{let d=await e.json();if(d?.error&&typeof d.error=="object"){let u=d.error;typeof u.code=="string"&&(r=u.code),typeof u.message=="string"&&(s=u.message);}else typeof d?.error=="string"&&(s=d.error);}catch{}let a=`${e.status}:${r}`;this.warnedRefusals.has(a)||(this.warnedRefusals.add(a),console.warn(`[SessionLogger] Dashboard refused session "${this.tag}" (HTTP ${e.status} ${r}): ${s}. ${n} trace event(s) dropped; further refusals of this kind are not repeated.`));}validateConfig(e){let n=Se();if(e.apiKey&&!n.startsWith("https://")&&!n.includes("localhost")&&!n.includes("127.0.0.1"))throw new Error("Dashboard URL must use HTTPS when API key is provided")}delay(e){return new Promise(n=>setTimeout(n,e))}annotations(){if(!this.observability)return {};let e={};for(let[n,r]of Object.entries(this.observability))if(r!==void 0){if(Qe.includes(n)){this.warnedKeys.has(n)||(this.warnedKeys.add(n),console.warn(`[SessionLogger] observability key "${n}" is reserved for session identity \u2014 ignoring it.`));continue}e[n]=r;}return e}};function ct(t){return (t||process.env.EVOLVE_DASHBOARD_URL||T).replace(/\/$/,"")}function dt(t){let e=t||process.env.EVOLVE_API_KEY;if(!e)throw new Error("EVOLVE_API_KEY is required for managed integrations");return e}async function ut(t){return await t.text().catch(()=>"")}function zr(t){let e=t?.trim();if(!e)throw new Error('Integration userId is required; use "root" for dashboard-owned accounts');return e}function Cd(t){let e=Array.from(new Set((t??[]).map(n=>n.trim()).filter(Boolean)));if(e.length===0)throw new Error("withIntegrations() requires at least one app");return e}async function go(t){let e=await fetch(`${ct(t.dashboardUrl)}/api/integration-sessions`,{method:"POST",headers:{Authorization:`Bearer ${dt(t.apiKey)}`,"content-type":"application/json",accept:"application/json"},body:JSON.stringify({userId:zr(t.userId),apps:Cd(t.apps),tools:t.tools,accounts:t.accounts,keys:t.keys,authConfigs:t.authConfigs,sessionTag:t.sessionTag}),signal:AbortSignal.timeout(3e4)});if(!e.ok)throw new Error(`Managed integrations session create failed (${e.status}): ${await ut(e)}`);let n=await e.json();if(!n.mcp?.url)throw new Error("Managed integrations response missing mcp.url");return {url:n.mcp.url,headers:n.mcp.headers??{}}}async function Rd(t){let e=await fetch(`${ct(t.dashboardUrl)}/api/integrations/connect`,{method:"POST",headers:{Authorization:`Bearer ${dt(t.apiKey)}`,"content-type":"application/json",accept:"application/json"},body:JSON.stringify({userId:zr(t.userId),app:t.app,accountLabel:t.accountLabel}),signal:AbortSignal.timeout(3e4)});if(!e.ok)throw new Error(`Managed integration connect failed (${e.status}): ${await ut(e)}`);return await e.json()}async function Ed(t){let e=Array.from(new Set((t.userIds??[]).map(d=>zr(d))));if(e.length===0)throw new Error("Integration accounts.list() requires at least one userId");let n=new URLSearchParams({userIds:e.join(",")});t.app&&n.set("app",t.app),t.statuses?.length&&n.set("statuses",t.statuses.join(","));let r={Authorization:`Bearer ${dt(t.apiKey)}`,accept:"application/json"},s=await fetch(`${ct(t.dashboardUrl)}/api/integrations/status?${n}`,{headers:r,signal:AbortSignal.timeout(3e4)});if(!s.ok)throw new Error(`Managed integration status failed (${s.status}): ${await ut(s)}`);return ((await s.json()).accounts??[]).map(d=>({userId:String(d.userId??""),app:String(d.app??""),appName:typeof d.appName=="string"?d.appName:void 0,appIcon:typeof d.appIcon=="string"?d.appIcon:void 0,accountLabel:typeof d.accountLabel=="string"?d.accountLabel:void 0,status:String(d.status??""),accountId:typeof d.accountId=="string"?d.accountId:void 0,updatedAt:typeof d.updatedAt=="string"?d.updatedAt:void 0}))}async function Td(t){let e=await fetch(`${ct(t.dashboardUrl)}/api/integrations/accounts/update`,{method:"POST",headers:{Authorization:`Bearer ${dt(t.apiKey)}`,"content-type":"application/json",accept:"application/json"},body:JSON.stringify({accountId:t.accountId,accountLabel:t.accountLabel}),signal:AbortSignal.timeout(3e4)});if(!e.ok)throw new Error(`Managed integration account update failed (${e.status}): ${await ut(e)}`);return await e.json()}async function Pd(t){let e=await fetch(`${ct(t.dashboardUrl)}/api/integrations/disconnect`,{method:"POST",headers:{Authorization:`Bearer ${dt(t.apiKey)}`,"content-type":"application/json",accept:"application/json"},body:JSON.stringify({accountId:t.accountId}),signal:AbortSignal.timeout(3e4)});if(!e.ok)throw new Error(`Managed integration account delete failed (${e.status}): ${await ut(e)}`);return await e.json()}var mo={auth:Rd,accounts:{list:Ed,update:Td,delete:Pd}};util.promisify(child_process.exec);var Zr=util.promisify(child_process.execFile),yo=Symbol.for("evolve:awsSdkCache"),bo=Symbol.for("evolve:s3ClientCache");var Nd=3600,jd=["node_modules","__pycache__","*.pyc",".cache",".npm",".pip",".venv","venv"];function Jd(t){if(t.startsWith("s3://")){let s=t.slice(5),a=s.indexOf("/");return a===-1?{bucket:s,prefix:""}:{bucket:s.slice(0,a),prefix:s.slice(a+1).replace(/\/+$/,"")}}let e=new URL(t),n=e.hostname,r=e.pathname.split("/").filter(Boolean);if(n.includes(".s3.")&&n.endsWith(".amazonaws.com"))return {bucket:n.split(".s3.")[0],prefix:r.join("/")};if(r.length===0)throw new Error(`Invalid storage URL: no bucket in path. Expected https://endpoint/bucket/prefix, got ${t}`);return {bucket:r[0],prefix:r.slice(1).join("/"),endpoint:`${e.protocol}//${e.host}`}}function hn(t,e,n,r){if(!t?.url&&!t?.bucket){if(!e)throw new Error("Storage requires either a URL (BYOK mode) or gateway API key. Use .withStorage({ url: 's3://bucket/prefix' }) or configure EVOLVE_API_KEY for gateway mode.");return {bucket:"",prefix:"",region:t?.region||"us-east-1",mode:"gateway",gatewayUrl:n,gatewayApiKey:r}}let s=t?.bucket||"",a=t?.prefix||"",d=t?.endpoint;if(t?.url){let u=Jd(t.url);s=s||u.bucket,a=a||u.prefix,d=d||u.endpoint;}if(!s)throw new Error("Storage bucket is required. Provide url (s3://bucket/prefix) or explicit bucket name.");return {bucket:s,prefix:a,region:t?.region||process.env.AWS_REGION||"us-east-1",endpoint:d,credentials:t?.credentials,mode:"byok"}}function Hr(t){if(t.includes(".."))throw new Error(`settingsDir must not contain '..': ${t}`);let e;if(t.startsWith("~/"))e=t.slice(2);else if(t.startsWith("/home/user/"))e=t.slice(11);else if(t.startsWith("."))e=t;else throw new Error(`Unexpected settingsDir: ${t}. Expected ~/ or /home/user/ prefix.`);if(!e||e.startsWith("/"))throw new Error(`settingsDir resolves to invalid path: ${t}`);return e}function Kd(t){if(t.includes(".."))throw new Error(`workingDir must not contain '..': ${t}`);if(!t.startsWith("/home/user/"))throw new Error(`Unexpected workingDir: ${t}. Must start with /home/user/.`);let e=t.slice(11).replace(/\/+$/,"");if(!e||e.startsWith("/")||e.includes("//"))throw new Error(`workingDir resolves to invalid path: ${t}`);return e}function pt(t){return "'"+t.replace(/'/g,"'\\''")+"'"}function Vd(t,e){let n=V(t),r=Kd(e),s=n.checkpointDirs?.length?n.checkpointDirs.map(u=>Hr(u)):[Hr(n.mcpConfig.settingsDir)],a=[...jd.map(u=>`--exclude=${pt(u)}`),`--exclude=${pt(r+"/temp")}`,...(n.checkpointExcludes??[]).map(u=>`--exclude=${pt(Hr(u))}`)].join(" "),d=[pt(r+"/"),...s.map(u=>pt(u+"/"))].join(" ");return [`tar -czf /tmp/evolve-ckpt.tar.gz -C /home/user ${a} ${d}`,"sha256sum /tmp/evolve-ckpt.tar.gz | awk '{print $1}'"].join(" && ")}async function Le(){let t=globalThis[yo];if(t)return t;let e="@aws-sdk/client-s3",n="@aws-sdk/s3-request-presigner";try{let[r,s]=await Promise.all([Function("m","return import(m)")(e),Function("m","return import(m)")(n)]);return globalThis[yo]={s3:r,presigner:s},{s3:r,presigner:s}}catch{throw new Error("Storage requires @aws-sdk/client-s3 and @aws-sdk/s3-request-presigner. Install: npm i @aws-sdk/client-s3 @aws-sdk/s3-request-presigner")}}async function mt(t){let e=t.credentials?`${t.credentials.accessKeyId}:${t.credentials.secretAccessKey.slice(-4)}`:"env",n=`${t.bucket}:${t.region}:${t.endpoint||""}:${e}`,r=globalThis[bo];if(r?.key===n)return r.client;let{s3:s}=await Le(),a=new s.S3Client({region:t.region,...t.endpoint&&{endpoint:t.endpoint,forcePathStyle:true},...t.credentials&&{credentials:t.credentials}});return globalThis[bo]={client:a,key:n},a}async function Eo(t,e,n){let{s3:r,presigner:s}=await Le(),a=await mt(t),d=n==="put"?new r.PutObjectCommand({Bucket:t.bucket,Key:e,ContentType:"application/gzip"}):new r.GetObjectCommand({Bucket:t.bucket,Key:e});return s.getSignedUrl(a,d,{expiresIn:Nd})}async function _o(t,e){let{s3:n}=await Le(),r=await mt(t);try{return await r.send(new n.HeadObjectCommand({Bucket:t.bucket,Key:e})),!0}catch(s){let a=s?.name||s?.message||"";if(s?.$metadata?.httpStatusCode===404||a==="NotFound"||a==="NoSuchKey")return false;throw s}}async function To(t,e){let{s3:n}=await Le(),a=await(await(await mt(t)).send(new n.GetObjectCommand({Bucket:t.bucket,Key:e}))).Body?.transformToString();if(!a)throw new Error(`Empty response from S3 key: ${e}`);return JSON.parse(a)}async function Gd(t,e,n){let{s3:r}=await Le();await(await mt(t)).send(new r.PutObjectCommand({Bucket:t.bucket,Key:e,Body:JSON.stringify(n,null,2),ContentType:"application/json"}));}function Po(t,e){return `${t.prefix?`${t.prefix}/`:""}data/${e}/archive.tar.gz`}function Ao(t,e){return `${t.prefix?`${t.prefix}/`:""}checkpoints/${e}.json`}function qd(){let t=Date.now().toString(36),e=Math.random().toString(36).slice(2,10);return `ckpt_${t}_${e}`}async function Io(t,e,n,r){let s=await fetch(`${t.gatewayUrl}/api/checkpoints/presign`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t.gatewayApiKey}`},body:JSON.stringify({tag:e,hash:n,action:r})});if(!s.ok){let a=await s.text().catch(()=>"");throw new Error(`Gateway presign failed (${s.status}): ${a}`)}return s.json()}async function zd(t,e){let n=await fetch(`${t.gatewayUrl}/api/checkpoints`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t.gatewayApiKey}`},body:JSON.stringify(e)});if(!n.ok){let r=await n.text().catch(()=>"");throw new Error(`Gateway checkpoint create failed (${n.status}): ${r}`)}return n.json()}async function Hd(t,e){let n=await fetch(`${t.gatewayUrl}/api/checkpoints/${encodeURIComponent(e)}`,{method:"GET",headers:{Authorization:`Bearer ${t.gatewayApiKey}`}});if(!n.ok){if(n.status===404)throw new Error(`Checkpoint ${e} not found`);let r=await n.text().catch(()=>"");throw new Error(`Gateway checkpoint get failed (${n.status}): ${r}`)}return n.json()}async function es(t,e,n,r,s){let a=new Date().toISOString(),d=Vd(n,r),u=await t.commands.run(d,{timeoutMs:12e4});if(u.exitCode!==0)throw new Error(`Checkpoint tar failed: ${u.stderr}`);let c=u.stdout.trim().split(`
218
- `).pop()?.trim();if(!c||c.length!==64)throw new Error(`Invalid checkpoint hash: ${c}`);let i=await t.commands.run("stat -c '%s' /tmp/evolve-ckpt.tar.gz 2>/dev/null || stat -f '%z' /tmp/evolve-ckpt.tar.gz",{timeoutMs:1e4}),o=parseInt(i.stdout.trim(),10),l=Number.isNaN(o)?void 0:o,p;try{if(e.mode==="byok"){let g=Po(e,c);if(!await _o(e,g)){let f=await Eo(e,g,"put"),y=await t.commands.run(`curl -sf -X PUT -H "Content-Type: application/gzip" --upload-file /tmp/evolve-ckpt.tar.gz "${f}"`,{timeoutMs:3e5});if(y.exitCode!==0)throw new Error(`Checkpoint upload failed: ${y.stderr}`);if(!await _o(e,g))throw new Error("Checkpoint upload verification failed (HeadObject)")}p=qd();let h={id:p,hash:c,tag:s.tag,timestamp:a,sizeBytes:l,agentType:n,model:s.model,workspaceMode:s.workspaceMode,parentId:s.parentId,comment:s.comment,sandboxId:t.sandboxId};await Gd(e,Ao(e,p),h);}else {let g=await Io(e,s.tag,c,"put");if(!g.alreadyExists){let h=await t.commands.run(`curl -sf -X PUT -H "Content-Type: application/gzip" --upload-file /tmp/evolve-ckpt.tar.gz "${g.url}"`,{timeoutMs:3e5});if(h.exitCode!==0)throw new Error(`Checkpoint upload failed: ${h.stderr}`)}p=(await zd(e,{tag:s.tag,hash:c,sizeBytes:l??0,agentType:n,model:s.model,workspaceMode:s.workspaceMode,parentId:s.parentId,comment:s.comment})).id;}}finally{await t.commands.run("rm -f /tmp/evolve-ckpt.tar.gz",{timeoutMs:1e4});}return {id:p,hash:c,tag:s.tag,timestamp:a,sizeBytes:l,agentType:n,model:s.model,workspaceMode:s.workspaceMode,parentId:s.parentId,comment:s.comment}}async function Oo(t,e,n){let r=await ns(e,n),s=r.hash,a={agentType:r.agentType,workspaceMode:r.workspaceMode},d=await Lo(e,r),u=await t.commands.run(`curl -sf -o /tmp/evolve-restore.tar.gz "${d}" && sha256sum /tmp/evolve-restore.tar.gz | awk '{print $1}'`,{timeoutMs:3e5});if(u.exitCode!==0)throw new Error(`Checkpoint download failed: ${u.stderr}`);let c=u.stdout.trim().split(`
219
- `).pop()?.trim();if(c!==s)throw await t.commands.run("rm -f /tmp/evolve-restore.tar.gz",{timeoutMs:1e4}),new Error(`Checkpoint integrity check failed (expected ${s}, got ${c})`);let i=await t.commands.run("tar -xzf /tmp/evolve-restore.tar.gz -C /home/user && rm -f /tmp/evolve-restore.tar.gz",{timeoutMs:12e4});if(i.exitCode!==0)throw new Error(`Checkpoint extraction failed: ${i.stderr}`);return a}function Mo(t,e){let n=e?.gatewayApiKey||process.env.EVOLVE_API_KEY,r=e?.gatewayUrl||T,s=!t.url&&!t.bucket&&!!n;return hn(t,s,r,n)}async function Do(t,e){let{s3:n}=await Le(),r=await mt(t),a=`${t.prefix?`${t.prefix}/`:""}checkpoints/`,d=[],u;do{let p={Bucket:t.bucket,Prefix:a,...u&&{ContinuationToken:u}},g=await r.send(new n.ListObjectsV2Command(p));if(g.Contents)for(let m of g.Contents)m.Key?.endsWith(".json")&&m.LastModified&&d.push({key:m.Key,lastModified:m.LastModified});u=g.IsTruncated?g.NextContinuationToken:void 0;}while(u);if(d.length===0)return [];d.sort((p,g)=>{let m=g.lastModified.getTime()-p.lastModified.getTime();return m!==0?m:g.key<p.key?-1:g.key>p.key?1:0});let i=!!e?.tag?d:e?.limit?d.slice(0,e.limit):d,l=(await Promise.all(i.map(async p=>{try{return await To(t,p.key)}catch{return null}}))).filter(p=>p!==null);return e?.tag&&(l=l.filter(p=>p.tag===e.tag)),e?.limit&&l.length>e.limit&&(l=l.slice(0,e.limit)),l}async function Uo(t,e){let n=new URLSearchParams;e?.limit&&n.set("limit",String(e.limit)),e?.tag&&n.set("tag",e.tag);let r=`${t.gatewayUrl}/api/checkpoints${n.toString()?`?${n}`:""}`,s=await fetch(r,{method:"GET",headers:{Authorization:`Bearer ${t.gatewayApiKey}`}});if(!s.ok){let a=await s.text().catch(()=>"");throw new Error(`Gateway list checkpoints failed (${s.status}): ${a}`)}return s.json()}function Wd(t){return t&&t>0?Math.min(t,500):100}async function ts(t,e){return t.mode==="byok"?(await Do(t,{limit:1,tag:e?.tag}))[0]??null:(await Uo(t,{limit:1,tag:e?.tag}))[0]??null}async function ns(t,e){if(t.mode==="byok"){let n=Ao(t,e);try{return await To(t,n)}catch(r){throw Yd(r)?new Error(`Checkpoint ${e} not found`):r}}else return await Hd(t,e)}async function wo(t,e,n){if(e==="latest"){let r=await ts(t,{tag:n});if(!r)throw new Error("No checkpoints found");return r.id}return e}async function Lo(t,e){if(t.mode==="byok")return Eo(t,Po(t,e.hash),"get");{let n=await Io(t,e.tag,e.hash,"get");if(!n.url)throw new Error("Gateway presign returned no download URL");return n.url}}function $o(t){return !(!t||Z.isAbsolute(t)||t.startsWith("-")||Z.normalize(t).startsWith("..")||t.includes("\0"))}function ko(t,e){let n=Z.resolve(t,e),r=Z.resolve(t),s=Z.relative(r,n);if(s.startsWith("..")||Z.isAbsolute(s))throw new Error(`Path traversal detected: "${e}" resolves outside target directory`)}function Yd(t){let e=t.name,n=t.message;return t?.$metadata?.httpStatusCode===404||e==="NoSuchKey"||e==="NotFound"||n==="NoSuchKey"}function Wr(t){let e=t.filter(n=>!$o(n));if(e.length>0)throw new Error(`Archive contains unsafe path(s): ${e.slice(0,3).join(", ")}`);return t}var Fo=10*1024*1024,vo=false;async function Bo(){if(!vo)try{await Zr("tar",["--version"]),vo=!0;}catch{throw new Error("The 'tar' command is not available on this system. Storage download/extract requires tar (available on macOS, Linux, and Windows with Git Bash or WSL).")}}async function So(t,e){let n=await ns(t,e),r=await Lo(t,n),s=e.replace(/[^a-zA-Z0-9_-]/g,"_"),a=Z.join(os$1.tmpdir(),`evolve-dl-${s}-${Date.now()}.tar.gz`),d=await fetch(r);if(!d.ok)throw new Error(`Checkpoint download failed (${d.status})`);if(!d.body)throw new Error("Checkpoint download returned empty body");let u=crypto.createHash("sha256"),c=ee.createWriteStream(a);try{let o=d.body.getReader();await new Promise((l,p)=>{c.on("error",p),c.on("finish",l);async function g(){for(;;){let{done:m,value:h}=await o.read();if(m){c.end();break}u.update(h),c.write(h)||await new Promise(f=>c.once("drain",f));}}g().catch(p);});}catch(o){throw c.destroy(),await promises.unlink(a).catch(()=>{}),o}let i=u.digest("hex");if(i!==n.hash)throw await promises.unlink(a).catch(()=>{}),new Error(`Checkpoint integrity check failed (expected ${n.hash}, got ${i})`);return {tmpPath:a,metadata:n}}var Qr=class extends Error{constructor(n){super(`Could not read a file path out of this 'tar -tvzf' line: ${JSON.stringify(n)}. The listing is produced by the tar on THIS machine, so an unrecognised layout means an unsupported tar variant (busybox, a very old BSD tar) rather than a corrupt archive. Refusing to return a partial file list.`);this.line=n;this.name="TarListingParseError";}},Xd={LC_ALL:"C",LANG:"C"};function Qd(t){let e=[],n=[],r=[];for(let s of t.trim().split(`
220
- `)){if(!s||s.startsWith("total "))continue;let a=s[0];if(a!=="-"&&a!=="d"&&a!=="l")throw new Error(`Archive contains unsupported entry type: "${a}"`);let d=s.match(/\d{2}:\d{2}\s+(.+)/)??s.match(/[A-Z][a-z]{2}\s+\d{1,2}\s+\d{4}\s+(.+)/);if(!d)throw new Qr(s);let u=d[1];if(a==="l"){let c=u.indexOf(" -> ");c!==-1&&(u=u.slice(0,c)),e.push(u);}else a==="d"?n.push(u.replace(/\/$/,"")):r.push(u);}return {filePaths:r,dirPaths:n,symlinkPaths:[...new Set(e)]}}async function xo(t){await Bo();let{stdout:e}=await Zr("tar",["-tvzf",t],{maxBuffer:Fo,env:{...process.env,...Xd}}),{filePaths:n,dirPaths:r,symlinkPaths:s}=Qd(e);return Wr(r),Wr(s),Wr(n)}async function Yr(t,e,n){await Bo(),await promises.mkdir(e,{recursive:true});let r=["-xzf",t,"--no-same-owner","--no-same-permissions","-C",e];n?.length&&r.push("--",...n),await Zr("tar",r,{maxBuffer:Fo});}function Zd(t){let e="^",n=0;for(;n<t.length;){let r=t[n];r==="*"&&t[n+1]==="*"?t[n+2]==="/"?(e+="(?:.*/)?",n+=3):(e+=".*",n+=2):r==="*"?(e+="[^/]*",n++):r==="?"?(e+="[^/]",n++):".+^${}()|[]\\".includes(r)?(e+="\\"+r,n++):(e+=r,n++);}return e+="$",new RegExp(e)}function rs(t,e){let n=Mo(t,e);return No(n)}function eu(t){let e=Mo(t||{});return No(e)}function No(t){return {async listCheckpoints(e){let n=Wd(e?.limit);return t.mode==="byok"?Do(t,{limit:n,tag:e?.tag}):Uo(t,{limit:n,tag:e?.tag})},async getCheckpoint(e){return ns(t,e)},async downloadCheckpoint(e,n){let r=n?.extract!==false,s=n?.to||process.cwd(),a=await wo(t,e),{tmpPath:d,metadata:u}=await So(t,a);try{if(r)return await promises.mkdir(s,{recursive:!0}),await xo(d),await Yr(d,s),s;{await promises.mkdir(s,{recursive:!0});let c=Z.join(s,`checkpoint-${u.id}.tar.gz`);return await promises.copyFile(d,c),c}}finally{await promises.unlink(d).catch(()=>{});}},async downloadFiles(e,n){let r=await wo(t,e),{tmpPath:s}=await So(t,r),a;try{let d=await xo(s),u;if(n?.files){let i=n.files.filter(l=>!$o(l));if(i.length>0)throw new Error(`Unsafe file path requested: ${i[0]}`);let o=new Set(n.files);u=d.filter(l=>o.has(l));}else if(n?.glob){let i=n.glob.map(Zd);u=d.filter(o=>i.some(l=>l.test(o)));}else u=d;if(u.length===0)return {};a=Z.join(os$1.tmpdir(),`evolve-extract-${Date.now()}`);try{await Yr(s,a,u);}catch(i){let o=i?.message??"";if(!o.includes("E2BIG")&&!o.includes("Argument list too long")&&!o.includes("ENAMETOOLONG"))throw i;await promises.rm(a,{recursive:!0,force:!0}).catch(()=>{}),a=Z.join(os$1.tmpdir(),`evolve-extract-${Date.now()}`),await Yr(s,a);}let c={};return await Promise.all(u.map(async i=>{ko(a,i),c[i]=await promises.readFile(Z.join(a,i));})),n?.to&&(await promises.mkdir(n.to,{recursive:!0}),await Promise.all(Object.entries(c).map(async([i,o])=>{ko(n.to,i);let l=Z.join(n.to,i);await promises.mkdir(Z.dirname(l),{recursive:!0}),await promises.writeFile(l,o);}))),c}finally{a&&await promises.rm(a,{recursive:true,force:true}).catch(()=>{}),await promises.unlink(s).catch(()=>{});}}}}function ue(t){return `'${t.replace(/'/g,"'\\''")}'`}function yn(t){return typeof t=="string"&&t.length>0}function $e(t,e,n){let r=t[e];if(!yn(r))throw new Error(`withPlugins() for ${n} requires ${e}`);return r}function tu(t,e){let n=e.stderr||e.stdout||`exit code ${e.exitCode}`;return new Error(`Plugin setup failed while running: ${t}
221
- ${n}`)}function nu(t,e){switch(t){case "droid":{let n=$e(e,"marketplace",t),r=$e(e,"plugin",t);return [`droid plugin marketplace add ${ue(n)}`,`droid plugin install ${ue(r)} --scope user`]}case "claude":{let n=$e(e,"marketplace",t),r=$e(e,"plugin",t);return [`claude plugin marketplace add ${ue(n)} --scope user`,`claude plugin install ${ue(r)} --scope user`]}case "gemini":{let n=$e(e,"source",t),r=e,s=[`gemini extensions install ${ue(n)}`];return yn(r.ref)&&s.push(`--ref ${ue(r.ref)}`),r.autoUpdate===true&&s.push("--auto-update"),r.preRelease===true&&s.push("--pre-release"),s.push("--consent"),r.skipSettings===true&&s.push("--skip-settings"),[s.join(" ")]}case "codex":{if("plugin"in e)throw new Error("withPlugins() for codex registers marketplaces only; codex has no plugin install command");let n=$e(e,"marketplace",t),r=e,s=[`codex plugin marketplace add ${ue(n)}`];if(yn(r.ref)&&s.push(`--ref ${ue(r.ref)}`),Array.isArray(r.sparse))for(let a of r.sparse){if(!yn(a))throw new Error("withPlugins() for codex requires sparse entries to be non-empty strings");s.push(`--sparse ${ue(a)}`);}return [s.join(" ")]}default:throw new Error(`withPlugins() is not supported for ${t}`)}}async function jo(t,e,n){if(n?.length)for(let r of n){let s=nu(t,r);for(let a of s){let d=await e.commands.run(a,{timeoutMs:12e4});if(d.exitCode!==0)throw tu(a,d)}}}var Go="/home/user/.agent-browser",Jo=`${Go}/config.json`,qo="/home/user/.actionbook",su=`${qo}/config.toml`;function Ko(t){return t==="actionbook"||t==="agent-browser"}function iu(t){return t.remote===true}function Vo(t){if(t==null)return;if(typeof t!="string")throw new Error("browser profile must be a string");let e=t.trim();if(!e)throw new Error("browser profile cannot be empty");return e}function zo(t){if(typeof t=="string"){if(t==="browser-use")return {provider:"browser-use",managed:false};if(Ko(t))return {provider:t,managed:false};throw new Error("Unsupported browser configuration")}if(t.provider===void 0)return {provider:"agent-browser",managed:t.remote!==false,profile:Vo(t.profile)};if(Ko(t.provider))return {provider:t.provider,managed:iu(t),profile:Vo(t.profile)};throw new Error("Unsupported browser configuration")}function ss(t,e){return t==="actionbook"?{envs:{},files:[{path:su,data:smolToml.stringify({version:1,browser:{mode:"cloud",cdp_endpoint:e.cdpUrl}}).trimEnd()+`
222
- `}],directories:[qo]}:{envs:{AGENT_BROWSER_CONFIG:Jo},files:[{path:Jo,data:`${JSON.stringify({cdp:e.cdpUrl},null,2)}
223
- `}],directories:[Go]}}function Ho(t){return (t?.dashboardUrl||T).replace(/\/$/,"")}async function Wo(t){return await t.text().catch(()=>"")}async function Yo(t,e,n={}){let r=await fetch(`${Ho(t)}/api/browser-sessions`,{method:"POST",headers:{Authorization:`Bearer ${t.apiKey}`,"content-type":"application/json",accept:"application/json"},body:JSON.stringify({sessionTag:e,options:{remote:true},browserAuth:n.browserCredentials===true,...t.profile?{profile:t.profile}:{}}),signal:AbortSignal.timeout(3e4)});if(!r.ok)throw new Error(`Managed browser session create failed (${r.status}): ${await Wo(r)}`);let s=await r.json();if(!s.id||!s.sessionId||!s.cdpUrl||!s.liveUrl)throw new Error("Managed browser session response missing id, sessionId, cdpUrl, or liveUrl");return {id:s.id,sessionId:s.sessionId,sessionTag:s.sessionTag,cdpUrl:s.cdpUrl,liveUrl:s.liveUrl,browserAuthGrantToken:s.browserAuthGrantToken}}async function Xo(t,e){let n=await fetch(`${Ho(t)}/api/browser-sessions/${encodeURIComponent(e.id)}`,{method:"DELETE",headers:{Authorization:`Bearer ${t.apiKey}`,accept:"application/json"},signal:AbortSignal.timeout(5e3)});if(!n.ok&&n.status!==404)throw new Error(`Managed browser session stop failed (${n.status}): ${await Wo(n)}`)}var lu="RSA-OAEP-256",is="browser-login";function cu(t){return (t||process.env.EVOLVE_DASHBOARD_URL||T).replace(/\/$/,"")}function du(t){let e=t||process.env.EVOLVE_API_KEY;if(!e)throw new Error("Browser credentials require EVOLVE_API_KEY or an explicit apiKey");return e}async function uu(t){return await t.text().catch(()=>"")}async function ft(t,e,n={}){let r=await fetch(`${cu(t?.dashboardUrl)}${e}`,{...n,headers:{Authorization:`Bearer ${du(t?.apiKey)}`,accept:"application/json",...n.body?{"content-type":"application/json"}:{},...n.headers||{}}});if(!r.ok)throw new Error(`Browser credentials request failed (${r.status}): ${await uu(r)}`);return await r.json()}async function pu(t,e){let n=await ft(t,"/api/browser-credentials/public-key"),r=crypto.publicEncrypt({key:n.publicKey,padding:crypto.constants.RSA_PKCS1_OAEP_PADDING,oaepHash:"sha256"},Buffer.from(e,"utf8"));return {algorithm:lu,keyId:n.id,ciphertext:r.toString("base64url")}}var bn=class{constructor(e={}){this.config=e;}toMetadata(e){let{account_label:n,...r}=e;return {...r,accountLabel:n}}async list(e={}){let n=new URLSearchParams;e.website&&n.set("website",e.website),e.limit!==void 0&&n.set("limit",String(e.limit)),e.offset!==void 0&&n.set("offset",String(e.offset));let r=n.toString()?`?${n.toString()}`:"",s=await ft(this.config,`/api/browser-credentials${r}`);return {credentials:s.credentials.map(a=>this.toMetadata(a)),total:s.total,count:s.count,offset:s.offset,hasMore:s.has_more??s.offset+s.count<s.total}}async create(e){let n=await pu(this.config,e.password),r=await ft(this.config,"/api/browser-credentials",{method:"POST",body:JSON.stringify({website:e.website,account_label:e.accountLabel,email:e.email,encryptedPassword:n})});return {status:r.status,credential:this.toMetadata(r.credential)}}async delete(e){let n="id"in e?e:{website:e.website,account_label:e.accountLabel};return await ft(this.config,"/api/browser-credentials",{method:"DELETE",body:JSON.stringify(n)})}};function os(t={}){return new bn(t)}async function Qo(t){return (await ft({apiKey:t.apiKey,dashboardUrl:t.dashboardUrl},"/api/browser-login/mcp-config",{method:"POST",body:JSON.stringify({browserSessionId:t.browserSessionId,sessionTag:t.sessionTag,grantToken:t.grantToken,allow:gu(t.config)})})).server}function gu(t){return t?.allow?.map(e=>({website:e.website,...e.accountLabel||e.account_label?{account_label:e.accountLabel||e.account_label}:{}}))}var as="x-evolve-provider-runtime-binding";function mu(t){return (t||process.env.EVOLVE_DASHBOARD_URL||T).replace(/\/$/,"")}async function fu(t){return await t.text().catch(()=>"")}var ht=class extends Error{constructor(n,r){super(r);this.status=n;this.name="ProviderRuntimeTokenRequestError";}};function Zo(t){return t instanceof ht&&t.status===404}async function ls(t,e,n={}){let r=await fetch(`${mu(t.dashboardUrl)}${e}`,{...n,headers:{Authorization:`Bearer ${t.apiKey}`,accept:"application/json",...n.body?{"content-type":"application/json"}:{},...n.headers||{}}});if(!r.ok)throw new ht(r.status,`Provider runtime token request failed (${r.status}): ${await fu(r)}`);return await r.json()}function hu(t){if(!t||typeof t!="object"||Array.isArray(t))return false;let e=t;return e.enabled===true&&(e.provider==="anthropic"||e.provider==="openai"||e.provider==="gemini"||e.provider==="dashscope"||e.provider==="kimi"||e.provider==="openrouter"||e.provider==="droid")&&(e.credentialMode==="provider_key"||e.credentialMode==="evolve_key")&&typeof e.token=="string"&&e.token.length>0&&typeof e.bindingSecret=="string"&&e.bindingSecret.length>0&&typeof e.baseUrl=="string"&&e.baseUrl.length>0&&typeof e.expiresAt=="string"&&e.expiresAt.length>0}async function ea(t,e){let n=await ls(t,"/api/provider-secrets/runtime-token",{method:"POST",body:JSON.stringify(e)});if(!hu(n))throw new ht(502,"Provider runtime token response was invalid");return n}async function ta(t,e){return (await ls(t,"/api/provider-secrets/runtime-token",{method:"PATCH",body:JSON.stringify(e)})).ok}async function na(t,e){return (await ls(t,"/api/provider-secrets/runtime-token",{method:"DELETE",body:JSON.stringify(e)})).ok}gs();cs();var da=["QUEUED","RUNNING","SCORING","SCORED","SCORING_ERROR","INFRASTRUCTURE_ERROR","BUDGET","INDETERMINATE","CANCELLED"],ua=["e2b","daytona","modal"],pa=["my","shared","org"],ga=["job","check","all"],ma=["queued","running","completed","failed"],fa=["queued","running","completed"];function Fe(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t;if(typeof e.provisional!="boolean")return null;let n=r=>typeof r=="number"&&Number.isFinite(r)?r:null;return {provisional:e.provisional,spent_usd:n(e.spent_usd),input_tokens:n(e.input_tokens),cached_input_tokens:n(e.cached_input_tokens),cache_write_tokens:n(e.cache_write_tokens),output_tokens:n(e.output_tokens),as_of:typeof e.as_of=="string"?e.as_of:null}}function ha(t){let e=t.stats?.evals??{},n=[];for(let r of Object.keys(e).sort()){let s=e[r]?.pass_at_k??{},a=[];for(let d of Object.keys(s)){let u=Number(d),c=s[d];!Number.isFinite(u)||typeof c!="number"||!Number.isFinite(c)||a.push({k:u,value:c});}a.length!==0&&(a.sort((d,u)=>d.k-u.k),n.push({evals_key:r,points:a}));}return n}var wn=["dataset_flag","job_dataset_record","task_hash","none"],kn=["hash_mismatch","task_not_in_dataset","no_dataset_named","dataset_ambiguous","no_hash_match","no_task_digest"];function q(t){let e=t.link??{};return {visibility:t.visibility==="LINK"?"LINK":"PRIVATE",link:{enabled:e.enabled===true,...typeof e.url=="string"?{url:e.url}:{}},emails:(Array.isArray(t.emails)?t.emails:[]).map(n=>{let r=n;return {email:String(r.email??""),shared_by:String(r.shared_by??""),created_at:String(r.created_at??"")}})}}var vn=1e9;function Sn(t){let e=t.data?.update;if(!e||typeof e!="object"||Array.isArray(e))return null;let n=e;if(n.sessionUpdate!=="usage"||n.source!=="gateway")return null;let r=n.usage;return !r||typeof r!="object"||Array.isArray(r)?null:n}function wt(t,e,n){if(t!=null){if(!Array.isArray(t)||t.some(r=>typeof r!="string"))throw new Error(`${n} storedAt is not a list of date-time strings`);if(t.length!==e)throw new Error(`${n} storedAt has ${t.length} entries for ${e} events (one per event, index-aligned)`);return t}}var ya=["trace-parsed","verifier","trace-stdout","trace-stderr","trace-atif","trajectory","agent-home","filesystem"],ba=["agent","verifier","setup","system","metrics"],_a=["trace-stdout","trace-stderr","agent-home"],ms=["missing_authorization","invalid_api_key","read_only_key","credential_service_unavailable","rate_limited","insufficient_credits","quota_exceeded","invalid_json","invalid_input","invalid_limit","invalid_status","invalid_visibility","invalid_cursor","invalid_after","invalid_format","invalid_ids","invalid_multipart","idempotency_key_reused","dataset_not_found","dataset_version_not_found","dataset_name_taken","dataset_in_use","dataset_not_owned","dataset_import_in_progress","upstream_not_watchable","no_active_version","version_not_ready","version_not_activatable","unknown_task_names","no_tasks","task_not_found","task_failed_to_build","upload_session_not_found","upload_offset_mismatch","upload_chunk_digest_mismatch","upload_incomplete","upload_archive_digest_mismatch","upload_session_failed","too_many_concurrent_upload_chunks","agent_not_found","agent_name_taken","agent_name_reserved","agent_invalid_name","agent_source_required","agent_source_conflict","agent_invalid_env","agent_too_large","agent_limit_reached","skill_not_found","skill_name_not_found","skill_ref_invalid","skill_unresolvable","skill_invalid","skill_in_use","skill_too_large","skill_limit_reached","too_many_concurrent_skill_uploads","secret_not_found","secret_ambiguous","secret_brokered_unsupported","secret_exists","secret_not_attached","agent_version_not_found","agent_version_unresolvable","agent_kwarg_unsupported","agent_config_unsupported","agent_config_key_refused","agent_preset_unsupported","provider_unsupported","job_not_found","job_not_terminal","no_failed_trials","trial_not_found","trial_not_settled","concurrent_update","regrade_source_ineligible","no_regradable_trials","invalid_rubric","analysis_already_running","analysis_not_found","analysis_not_terminal","check_not_found","check_not_terminal","no_checkable_tasks","too_many_concurrent_check_uploads","no_analyzable_trials","session_not_found","not_a_job_dir","invalid_trial","trial_too_large","upload_too_large","job_uploaded","job_already_uploaded","too_many_concurrent_job_uploads","job_import_not_found","import_not_found","import_too_large","too_many_concurrent_imports","invalid_archive","unpinned_git_ref","hub_package_not_found","hub_unreachable","package_not_retained","package_corrupt","package_missing","too_many_concurrent_package_downloads","org_not_found","org_slug_taken","org_forbidden","org_personal_immutable","org_last_owner","org_in_use","org_member_not_found","invite_not_found","invite_invalid","not_found","not_captured","filesystem_state","feature_unsupported","provider_unreachable","task_package_not_retained","internal_error"];function xn(t){return typeof t=="string"&&ms.includes(t)}var wa=["level","binary","none"];function Ru(t,e,n){return t==="measured"&&e===0&&n.every(r=>(r??null)===null)}function Eu(t,e,n){return typeof t!="number"||!Number.isFinite(t)?{lane:"unmeasured"}:e==="measured"?Ru(e,t,n)?{lane:"unmeasured"}:{lane:"measured",usd:t}:e==="measured_provisional"?{lane:"floor",usd:t}:{lane:"unmeasured"}}function fs(t){let e=t.agent_result;return Eu(e?.cost_usd,t.spend_source,[e?.n_input_tokens,e?.n_cache_tokens,e?.n_output_tokens])}var hs={stdoutFile:"stdout.log",harborCopies:[]},Rn={claude:{stdoutFile:"claude-code.txt",harborCopies:[{sandboxRoot:"/root/.claude",agentDir:"sessions"}]},codex:{stdoutFile:"codex.txt",harborCopies:[{sandboxRoot:"/root/.codex/sessions",agentDir:"sessions"}]},gemini:{stdoutFile:"gemini-cli.txt",harborCopies:[]},qwen:{stdoutFile:"qwen-code.txt",harborCopies:[{sandboxRoot:"/root/.qwen/projects",agentDir:"qwen-sessions"}]},kimi:{stdoutFile:"kimi-code.txt",harborCopies:[]},opencode:{stdoutFile:"opencode.txt",harborCopies:[{sandboxRoot:"/root/.local/share/opencode",agentDir:"opencode/xdg-data/opencode"}]},droid:{stdoutFile:"droid.txt",harborCopies:[]}},Tu={"claude-code":"claude",codex:"codex","gemini-cli":"gemini","qwen-coder":"qwen","kimi-code":"kimi",opencode:"opencode"};function ys(t){let e=t in Rn?t:Tu[t];return e===void 0?hs:Rn[e]}var Pu="/logs/agent",Au="agent-home.json";function bs(t){let e=ka(Pu,t);if(e!==null)return e;let n=t.replace(/^\/+/,"");if(n===Au)return n;let r=/^(?:root|home\/[^/]+)\/(.+)$/.exec(n);return r!==null?r[1]:`sessions/${n}`}function ka(t,e){return e.startsWith(`${t}/`)?e.slice(t.length+1):null}function _s(t,e){let n=bs(e),r=e.replace(/^\/+/,"");t.has(n)&&(n=r);for(let s=2;t.has(n);s++)n=`${r}.${s}`;return t.add(n),n}function ws(t,e){for(let n of t.harborCopies){let r=ka(n.sandboxRoot,e);if(r!==null)return `${n.agentDir}/${r}`}return null}function Iu(t,e){let n=new Set,r={};for(let s of Object.keys(e).sort()){r[`agent/${_s(n,s)}`]=e[s];let a=ws(t,s);a!==null&&!n.has(a)&&(n.add(a),r[`agent/${a}`]=e[s]);}return Object.fromEntries(Object.keys(r).sort().map(s=>[s,r[s]]))}function Cn(t){return JSON.stringify(t,null,2)+`
224
- `}function ks(t,e,n){return {trial_id:t.id,job_id:t.job_id,user_id:n,provider:t.sandbox_provider,gateway:{cost_usd:t.agent_result?.cost_usd??null,n_input_tokens:t.agent_result?.n_input_tokens??null,n_cache_tokens:t.agent_result?.n_cache_tokens??null,n_output_tokens:t.agent_result?.n_output_tokens??null,spend_source:t.spend_source,max_trial_spend_usd:t.max_trial_spend_usd,judge:t.judge_result?{cost_usd:t.judge_result.cost_usd,n_input_tokens:t.judge_result.n_input_tokens,n_cache_tokens:t.judge_result.n_cache_tokens,n_output_tokens:t.judge_result.n_output_tokens,spend_source:t.judge_spend_source??null}:null},regrade_lineage:{is_regrade:e?.is_regrade??false,source_jobs:e?.source_jobs??[],n_retries:t.n_retries,retries:t.retries}}}function va(t,e){return {job_id:t.id,user_id:e,provider:t.sandbox_provider,gateway:{cost_usd:t.stats.cost_usd??null,judge_cost_usd:t.stats.judge_cost_usd??null,n_unmeasured_trials:t.stats.n_unmeasured_trials??null,n_unmeasured_judge_trials:t.stats.n_unmeasured_judge_trials??null,n_input_tokens:t.stats.n_input_tokens??null,n_cache_tokens:t.stats.n_cache_tokens??null,n_output_tokens:t.stats.n_output_tokens??null,max_trial_spend_usd:t.max_trial_spend_usd,worst_case_spend_usd:t.worst_case_spend_usd},regrade_lineage:{is_regrade:t.is_regrade,source_jobs:t.source_jobs}}}function Ou(t){let e=t.agent_result;return e==null?e??null:fs(t).lane==="measured"?e:{...e,cost_usd:null}}function Sa(t){let{trial:e}=t,n={};n["config.json"]=Cn({trial_name:e.id,task:{name:e.task_name,source:e.source},agent:{name:e.agent_info.name,version:e.agent_info.version,model_name:e.agent_info.model_info.name,reasoning_effort:e.agent_info.reasoning_effort}}),n["result.json"]=Cn({trial_name:e.id,task_name:e.task_name,status:e.status,reward:e.reward,verifier_result:e.verifier_result,exception_info:e.exception_info,agent_result:Ou(e),started_at:e.started_at,finished_at:e.finished_at,environment_setup:e.environment_setup,agent_setup:e.agent_setup,agent_execution:e.agent_execution,verifier:e.verifier});let r=ys(e.agent_info.name);return t.atif!==null&&(n["agent/trajectory.json"]=t.atif),t.stdout!==null&&(n[`agent/${r.stdoutFile}`]=t.stdout),t.stderr!==null&&(n["agent/stderr.log"]=t.stderr),t.events.length>0&&(n["agent/trace-parsed.jsonl"]=t.events.map(s=>JSON.stringify(s)).join(`
222
+ `;this.localQueue=this.localQueue.then(()=>this.appendLocal(n)).catch(()=>{}),this.apiKey&&this.eventBuffer.push(e),this.metaWritten=true;}async appendLocal(e){try{await this.dirReady,await promises.appendFile(this.localFilePath,e,"utf-8");}catch(n){console.debug("[SessionLogger] Local write failed:",n);}}scheduleFlush(){if(this.eventBuffer.length>=Yi){this.flushDashboard();return}!this.flushTimer&&!this.isClosed&&(this.flushTimer=setTimeout(()=>{this.flushTimer=void 0,this.flushDashboard();},Zi));}flushDashboard(){if(!this.apiKey||this.eventBuffer.length===0)return;let e=this.eventBuffer.splice(0);this.dashboardQueue=this.dashboardQueue.then(()=>this.sendToDashboard(e)).catch(()=>{});}async sendToDashboard(e){let n={tag:this.tag,provider:this.provider,agent:this.agent,model:this.model,reasoningEffort:this.reasoningEffort!==void 0&&Kp.test(this.reasoningEffort)?this.reasoningEffort:null,sandboxId:this.sandboxId,...this.org?{org:this.org}:{},timestamp:this.timestamp,...this.annotations(),events:e};for(let r=1;r<=ln;r++)try{let s=await fetch(`${this.dashboardUrl}/api/sessions/ingest`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify(n),signal:AbortSignal.timeout(1e4)});if(s.ok)return;if(s.status===429||s.status===401||s.status>=500){if(r===ln){console.debug(`[SessionLogger] Dashboard ${s.status} after ${r} retries, requeueing`),this.requeueEvents(e);return}await this.delay(Nr*r);continue}await this.warnRefusal(s,e.length);return}catch(s){r===ln?(console.debug("[SessionLogger] Dashboard sync failed after retries, requeueing:",s),this.requeueEvents(e)):await this.delay(Nr*r);}}requeueEvents(e){this.eventBuffer.unshift(...e);}async warnRefusal(e,n){let r="unknown_error",s=e.statusText;try{let c=await e.json();if(c?.error&&typeof c.error=="object"){let u=c.error;typeof u.code=="string"&&(r=u.code),typeof u.message=="string"&&(s=u.message);}else typeof c?.error=="string"&&(s=c.error);}catch{}let o=`${e.status}:${r}`;this.warnedRefusals.has(o)||(this.warnedRefusals.add(o),console.warn(`[SessionLogger] Dashboard refused session "${this.tag}" (HTTP ${e.status} ${r}): ${s}. ${n} trace event(s) dropped; further refusals of this kind are not repeated.`));}validateConfig(e){let n=Je();if(e.apiKey&&!n.startsWith("https://")&&!n.includes("localhost")&&!n.includes("127.0.0.1"))throw new Error("Dashboard URL must use HTTPS when API key is provided")}delay(e){return new Promise(n=>setTimeout(n,e))}annotations(){if(!this.observability)return {};let e={};for(let[n,r]of Object.entries(this.observability))if(r!==void 0){if(wt.includes(n)){this.warnedKeys.has(n)||(this.warnedKeys.add(n),console.warn(`[SessionLogger] observability key "${n}" is reserved for session identity \u2014 ignoring it.`));continue}e[n]=r;}return e}};function Ot(t){return (t||process.env.EVOLVE_DASHBOARD_URL||M).replace(/\/$/,"")}function Mt(t){let e=t||process.env.EVOLVE_API_KEY;if(!e)throw new Error("EVOLVE_API_KEY is required for managed integrations");return e}async function Dt(t){return await t.text().catch(()=>"")}function Zs(t){let e=t?.trim();if(!e)throw new Error('Integration userId is required; use "root" for dashboard-owned accounts');return e}function Vp(t){let e=Array.from(new Set((t??[]).map(n=>n.trim()).filter(Boolean)));if(e.length===0)throw new Error("withIntegrations() requires at least one app");return e}async function $a(t){let e=await fetch(`${Ot(t.dashboardUrl)}/api/integration-sessions`,{method:"POST",headers:{Authorization:`Bearer ${Mt(t.apiKey)}`,"content-type":"application/json",accept:"application/json"},body:JSON.stringify({userId:Zs(t.userId),apps:Vp(t.apps),tools:t.tools,accounts:t.accounts,keys:t.keys,authConfigs:t.authConfigs,sessionTag:t.sessionTag}),signal:AbortSignal.timeout(3e4)});if(!e.ok)throw new Error(`Managed integrations session create failed (${e.status}): ${await Dt(e)}`);let n=await e.json();if(!n.mcp?.url)throw new Error("Managed integrations response missing mcp.url");return {url:n.mcp.url,headers:n.mcp.headers??{}}}async function Gp(t){let e=await fetch(`${Ot(t.dashboardUrl)}/api/integrations/connect`,{method:"POST",headers:{Authorization:`Bearer ${Mt(t.apiKey)}`,"content-type":"application/json",accept:"application/json"},body:JSON.stringify({userId:Zs(t.userId),app:t.app,accountLabel:t.accountLabel}),signal:AbortSignal.timeout(3e4)});if(!e.ok)throw new Error(`Managed integration connect failed (${e.status}): ${await Dt(e)}`);return await e.json()}async function zp(t){let e=Array.from(new Set((t.userIds??[]).map(c=>Zs(c))));if(e.length===0)throw new Error("Integration accounts.list() requires at least one userId");let n=new URLSearchParams({userIds:e.join(",")});t.app&&n.set("app",t.app),t.statuses?.length&&n.set("statuses",t.statuses.join(","));let r={Authorization:`Bearer ${Mt(t.apiKey)}`,accept:"application/json"},s=await fetch(`${Ot(t.dashboardUrl)}/api/integrations/status?${n}`,{headers:r,signal:AbortSignal.timeout(3e4)});if(!s.ok)throw new Error(`Managed integration status failed (${s.status}): ${await Dt(s)}`);return ((await s.json()).accounts??[]).map(c=>({userId:String(c.userId??""),app:String(c.app??""),appName:typeof c.appName=="string"?c.appName:void 0,appIcon:typeof c.appIcon=="string"?c.appIcon:void 0,accountLabel:typeof c.accountLabel=="string"?c.accountLabel:void 0,status:String(c.status??""),accountId:typeof c.accountId=="string"?c.accountId:void 0,updatedAt:typeof c.updatedAt=="string"?c.updatedAt:void 0}))}async function Hp(t){let e=await fetch(`${Ot(t.dashboardUrl)}/api/integrations/accounts/update`,{method:"POST",headers:{Authorization:`Bearer ${Mt(t.apiKey)}`,"content-type":"application/json",accept:"application/json"},body:JSON.stringify({accountId:t.accountId,accountLabel:t.accountLabel}),signal:AbortSignal.timeout(3e4)});if(!e.ok)throw new Error(`Managed integration account update failed (${e.status}): ${await Dt(e)}`);return await e.json()}async function qp(t){let e=await fetch(`${Ot(t.dashboardUrl)}/api/integrations/disconnect`,{method:"POST",headers:{Authorization:`Bearer ${Mt(t.apiKey)}`,"content-type":"application/json",accept:"application/json"},body:JSON.stringify({accountId:t.accountId}),signal:AbortSignal.timeout(3e4)});if(!e.ok)throw new Error(`Managed integration account delete failed (${e.status}): ${await Dt(e)}`);return await e.json()}var La={auth:Gp,accounts:{list:zp,update:Hp,delete:qp}};util.promisify(child_process.exec);var ri=util.promisify(child_process.execFile),Ba=Symbol.for("evolve:awsSdkCache"),ja=Symbol.for("evolve:s3ClientCache");var ig=3600,og=["node_modules","__pycache__","*.pyc",".cache",".npm",".pip",".venv","venv"];function ag(t){if(t.startsWith("s3://")){let s=t.slice(5),o=s.indexOf("/");return o===-1?{bucket:s,prefix:""}:{bucket:s.slice(0,o),prefix:s.slice(o+1).replace(/\/+$/,"")}}let e=new URL(t),n=e.hostname,r=e.pathname.split("/").filter(Boolean);if(n.includes(".s3.")&&n.endsWith(".amazonaws.com"))return {bucket:n.split(".s3.")[0],prefix:r.join("/")};if(r.length===0)throw new Error(`Invalid storage URL: no bucket in path. Expected https://endpoint/bucket/prefix, got ${t}`);return {bucket:r[0],prefix:r.slice(1).join("/"),endpoint:`${e.protocol}//${e.host}`}}function lr(t,e,n,r){if(!t?.url&&!t?.bucket){if(!e)throw new Error("Storage requires either a URL (BYOK mode) or gateway API key. Use .withStorage({ url: 's3://bucket/prefix' }) or configure EVOLVE_API_KEY for gateway mode.");return {bucket:"",prefix:"",region:t?.region||"us-east-1",mode:"gateway",gatewayUrl:n,gatewayApiKey:r}}let s=t?.bucket||"",o=t?.prefix||"",c=t?.endpoint;if(t?.url){let u=ag(t.url);s=s||u.bucket,o=o||u.prefix,c=c||u.endpoint;}if(!s)throw new Error("Storage bucket is required. Provide url (s3://bucket/prefix) or explicit bucket name.");return {bucket:s,prefix:o,region:t?.region||process.env.AWS_REGION||"us-east-1",endpoint:c,credentials:t?.credentials,mode:"byok"}}function Xs(t){if(t.includes(".."))throw new Error(`settingsDir must not contain '..': ${t}`);let e;if(t.startsWith("~/"))e=t.slice(2);else if(t.startsWith("/home/user/"))e=t.slice(11);else if(t.startsWith("."))e=t;else throw new Error(`Unexpected settingsDir: ${t}. Expected ~/ or /home/user/ prefix.`);if(!e||e.startsWith("/"))throw new Error(`settingsDir resolves to invalid path: ${t}`);return e}function lg(t){if(t.includes(".."))throw new Error(`workingDir must not contain '..': ${t}`);if(!t.startsWith("/home/user/"))throw new Error(`Unexpected workingDir: ${t}. Must start with /home/user/.`);let e=t.slice(11).replace(/\/+$/,"");if(!e||e.startsWith("/")||e.includes("//"))throw new Error(`workingDir resolves to invalid path: ${t}`);return e}function Ut(t){return "'"+t.replace(/'/g,"'\\''")+"'"}function cg(t,e){let n=te(t),r=lg(e),s=n.checkpointDirs?.length?n.checkpointDirs.map(u=>Xs(u)):[Xs(n.mcpConfig.settingsDir)],o=[...og.map(u=>`--exclude=${Ut(u)}`),`--exclude=${Ut(r+"/temp")}`,...(n.checkpointExcludes??[]).map(u=>`--exclude=${Ut(Xs(u))}`)].join(" "),c=[Ut(r+"/"),...s.map(u=>Ut(u+"/"))].join(" ");return [`tar -czf /tmp/evolve-ckpt.tar.gz -C /home/user ${o} ${c}`,"sha256sum /tmp/evolve-ckpt.tar.gz | awk '{print $1}'"].join(" && ")}async function rt(){let t=globalThis[Ba];if(t)return t;let e="@aws-sdk/client-s3",n="@aws-sdk/s3-request-presigner";try{let[r,s]=await Promise.all([Function("m","return import(m)")(e),Function("m","return import(m)")(n)]);return globalThis[Ba]={s3:r,presigner:s},{s3:r,presigner:s}}catch{throw new Error("Storage requires @aws-sdk/client-s3 and @aws-sdk/s3-request-presigner. Install: npm i @aws-sdk/client-s3 @aws-sdk/s3-request-presigner")}}async function Lt(t){let e=t.credentials?`${t.credentials.accessKeyId}:${t.credentials.secretAccessKey.slice(-4)}`:"env",n=`${t.bucket}:${t.region}:${t.endpoint||""}:${e}`,r=globalThis[ja];if(r?.key===n)return r.client;let{s3:s}=await rt(),o=new s.S3Client({region:t.region,...t.endpoint&&{endpoint:t.endpoint,forcePathStyle:true},...t.credentials&&{credentials:t.credentials}});return globalThis[ja]={client:o,key:n},o}async function Ya(t,e,n){let{s3:r,presigner:s}=await rt(),o=await Lt(t),c=n==="put"?new r.PutObjectCommand({Bucket:t.bucket,Key:e,ContentType:"application/gzip"}):new r.GetObjectCommand({Bucket:t.bucket,Key:e});return s.getSignedUrl(o,c,{expiresIn:ig})}async function Ja(t,e){let{s3:n}=await rt(),r=await Lt(t);try{return await r.send(new n.HeadObjectCommand({Bucket:t.bucket,Key:e})),!0}catch(s){let o=s?.name||s?.message||"";if(s?.$metadata?.httpStatusCode===404||o==="NotFound"||o==="NoSuchKey")return false;throw s}}async function Za(t,e){let{s3:n}=await rt(),o=await(await(await Lt(t)).send(new n.GetObjectCommand({Bucket:t.bucket,Key:e}))).Body?.transformToString();if(!o)throw new Error(`Empty response from S3 key: ${e}`);return JSON.parse(o)}async function dg(t,e,n){let{s3:r}=await rt();await(await Lt(t)).send(new r.PutObjectCommand({Bucket:t.bucket,Key:e,Body:JSON.stringify(n,null,2),ContentType:"application/json"}));}function Xa(t,e){return `${t.prefix?`${t.prefix}/`:""}data/${e}/archive.tar.gz`}function Qa(t,e){return `${t.prefix?`${t.prefix}/`:""}checkpoints/${e}.json`}function ug(){let t=Date.now().toString(36),e=Math.random().toString(36).slice(2,10);return `ckpt_${t}_${e}`}async function el(t,e,n,r){let s=await fetch(`${t.gatewayUrl}/api/checkpoints/presign`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t.gatewayApiKey}`},body:JSON.stringify({tag:e,hash:n,action:r})});if(!s.ok){let o=await s.text().catch(()=>"");throw new Error(`Gateway presign failed (${s.status}): ${o}`)}return s.json()}async function pg(t,e){let n=await fetch(`${t.gatewayUrl}/api/checkpoints`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t.gatewayApiKey}`},body:JSON.stringify(e)});if(!n.ok){let r=await n.text().catch(()=>"");throw new Error(`Gateway checkpoint create failed (${n.status}): ${r}`)}return n.json()}async function gg(t,e){let n=await fetch(`${t.gatewayUrl}/api/checkpoints/${encodeURIComponent(e)}`,{method:"GET",headers:{Authorization:`Bearer ${t.gatewayApiKey}`}});if(!n.ok){if(n.status===404)throw new Error(`Checkpoint ${e} not found`);let r=await n.text().catch(()=>"");throw new Error(`Gateway checkpoint get failed (${n.status}): ${r}`)}return n.json()}async function si(t,e,n,r,s){let o=new Date().toISOString(),c=cg(n,r),u=await t.commands.run(c,{timeoutMs:12e4});if(u.exitCode!==0)throw new Error(`Checkpoint tar failed: ${u.stderr}`);let l=u.stdout.trim().split(`
223
+ `).pop()?.trim();if(!l||l.length!==64)throw new Error(`Invalid checkpoint hash: ${l}`);let i=await t.commands.run("stat -c '%s' /tmp/evolve-ckpt.tar.gz 2>/dev/null || stat -f '%z' /tmp/evolve-ckpt.tar.gz",{timeoutMs:1e4}),a=parseInt(i.stdout.trim(),10),d=Number.isNaN(a)?void 0:a,p;try{if(e.mode==="byok"){let g=Xa(e,l);if(!await Ja(e,g)){let h=await Ya(e,g,"put"),b=await t.commands.run(`curl -sf -X PUT -H "Content-Type: application/gzip" --upload-file /tmp/evolve-ckpt.tar.gz "${h}"`,{timeoutMs:3e5});if(b.exitCode!==0)throw new Error(`Checkpoint upload failed: ${b.stderr}`);if(!await Ja(e,g))throw new Error("Checkpoint upload verification failed (HeadObject)")}p=ug();let f={id:p,hash:l,tag:s.tag,timestamp:o,sizeBytes:d,agentType:n,model:s.model,workspaceMode:s.workspaceMode,parentId:s.parentId,comment:s.comment,sandboxId:t.sandboxId};await dg(e,Qa(e,p),f);}else {let g=await el(e,s.tag,l,"put");if(!g.alreadyExists){let f=await t.commands.run(`curl -sf -X PUT -H "Content-Type: application/gzip" --upload-file /tmp/evolve-ckpt.tar.gz "${g.url}"`,{timeoutMs:3e5});if(f.exitCode!==0)throw new Error(`Checkpoint upload failed: ${f.stderr}`)}p=(await pg(e,{tag:s.tag,hash:l,sizeBytes:d??0,agentType:n,model:s.model,workspaceMode:s.workspaceMode,parentId:s.parentId,comment:s.comment})).id;}}finally{await t.commands.run("rm -f /tmp/evolve-ckpt.tar.gz",{timeoutMs:1e4});}return {id:p,hash:l,tag:s.tag,timestamp:o,sizeBytes:d,agentType:n,model:s.model,workspaceMode:s.workspaceMode,parentId:s.parentId,comment:s.comment}}async function tl(t,e,n){let r=await oi(e,n),s=r.hash,o={agentType:r.agentType,workspaceMode:r.workspaceMode},c=await il(e,r),u=await t.commands.run(`curl -sf -o /tmp/evolve-restore.tar.gz "${c}" && sha256sum /tmp/evolve-restore.tar.gz | awk '{print $1}'`,{timeoutMs:3e5});if(u.exitCode!==0)throw new Error(`Checkpoint download failed: ${u.stderr}`);let l=u.stdout.trim().split(`
224
+ `).pop()?.trim();if(l!==s)throw await t.commands.run("rm -f /tmp/evolve-restore.tar.gz",{timeoutMs:1e4}),new Error(`Checkpoint integrity check failed (expected ${s}, got ${l})`);let i=await t.commands.run("tar -xzf /tmp/evolve-restore.tar.gz -C /home/user && rm -f /tmp/evolve-restore.tar.gz",{timeoutMs:12e4});if(i.exitCode!==0)throw new Error(`Checkpoint extraction failed: ${i.stderr}`);return o}function nl(t,e){let n=e?.gatewayApiKey||process.env.EVOLVE_API_KEY,r=e?.gatewayUrl||M,s=!t.url&&!t.bucket&&!!n;return lr(t,s,r,n)}async function rl(t,e){let{s3:n}=await rt(),r=await Lt(t),o=`${t.prefix?`${t.prefix}/`:""}checkpoints/`,c=[],u;do{let p={Bucket:t.bucket,Prefix:o,...u&&{ContinuationToken:u}},g=await r.send(new n.ListObjectsV2Command(p));if(g.Contents)for(let m of g.Contents)m.Key?.endsWith(".json")&&m.LastModified&&c.push({key:m.Key,lastModified:m.LastModified});u=g.IsTruncated?g.NextContinuationToken:void 0;}while(u);if(c.length===0)return [];c.sort((p,g)=>{let m=g.lastModified.getTime()-p.lastModified.getTime();return m!==0?m:g.key<p.key?-1:g.key>p.key?1:0});let i=!!e?.tag?c:e?.limit?c.slice(0,e.limit):c,d=(await Promise.all(i.map(async p=>{try{return await Za(t,p.key)}catch{return null}}))).filter(p=>p!==null);return e?.tag&&(d=d.filter(p=>p.tag===e.tag)),e?.limit&&d.length>e.limit&&(d=d.slice(0,e.limit)),d}async function sl(t,e){let n=new URLSearchParams;e?.limit&&n.set("limit",String(e.limit)),e?.tag&&n.set("tag",e.tag);let r=`${t.gatewayUrl}/api/checkpoints${n.toString()?`?${n}`:""}`,s=await fetch(r,{method:"GET",headers:{Authorization:`Bearer ${t.gatewayApiKey}`}});if(!s.ok){let o=await s.text().catch(()=>"");throw new Error(`Gateway list checkpoints failed (${s.status}): ${o}`)}return s.json()}function mg(t){return t&&t>0?Math.min(t,500):100}async function ii(t,e){return t.mode==="byok"?(await rl(t,{limit:1,tag:e?.tag}))[0]??null:(await sl(t,{limit:1,tag:e?.tag}))[0]??null}async function oi(t,e){if(t.mode==="byok"){let n=Qa(t,e);try{return await Za(t,n)}catch(r){throw fg(r)?new Error(`Checkpoint ${e} not found`):r}}else return await gg(t,e)}async function Ka(t,e,n){if(e==="latest"){let r=await ii(t,{tag:n});if(!r)throw new Error("No checkpoints found");return r.id}return e}async function il(t,e){if(t.mode==="byok")return Ya(t,Xa(t,e.hash),"get");{let n=await el(t,e.tag,e.hash,"get");if(!n.url)throw new Error("Gateway presign returned no download URL");return n.url}}function ol(t){return !(!t||fe.isAbsolute(t)||t.startsWith("-")||fe.normalize(t).startsWith("..")||t.includes("\0"))}function Va(t,e){let n=fe.resolve(t,e),r=fe.resolve(t),s=fe.relative(r,n);if(s.startsWith("..")||fe.isAbsolute(s))throw new Error(`Path traversal detected: "${e}" resolves outside target directory`)}function fg(t){let e=t.name,n=t.message;return t?.$metadata?.httpStatusCode===404||e==="NoSuchKey"||e==="NotFound"||n==="NoSuchKey"}function Qs(t){let e=t.filter(n=>!ol(n));if(e.length>0)throw new Error(`Archive contains unsafe path(s): ${e.slice(0,3).join(", ")}`);return t}var al=10*1024*1024,Ga=false;async function ll(){if(!Ga)try{await ri("tar",["--version"]),Ga=!0;}catch{throw new Error("The 'tar' command is not available on this system. Storage download/extract requires tar (available on macOS, Linux, and Windows with Git Bash or WSL).")}}async function za(t,e){let n=await oi(t,e),r=await il(t,n),s=e.replace(/[^a-zA-Z0-9_-]/g,"_"),o=fe.join(os$1.tmpdir(),`evolve-dl-${s}-${Date.now()}.tar.gz`),c=await fetch(r);if(!c.ok)throw new Error(`Checkpoint download failed (${c.status})`);if(!c.body)throw new Error("Checkpoint download returned empty body");let u=crypto.createHash("sha256"),l=he.createWriteStream(o);try{let a=c.body.getReader();await new Promise((d,p)=>{l.on("error",p),l.on("finish",d);async function g(){for(;;){let{done:m,value:f}=await a.read();if(m){l.end();break}u.update(f),l.write(f)||await new Promise(h=>l.once("drain",h));}}g().catch(p);});}catch(a){throw l.destroy(),await promises.unlink(o).catch(()=>{}),a}let i=u.digest("hex");if(i!==n.hash)throw await promises.unlink(o).catch(()=>{}),new Error(`Checkpoint integrity check failed (expected ${n.hash}, got ${i})`);return {tmpPath:o,metadata:n}}var ni=class extends Error{constructor(n){super(`Could not read a file path out of this 'tar -tvzf' line: ${JSON.stringify(n)}. The listing is produced by the tar on THIS machine, so an unrecognised layout means an unsupported tar variant (busybox, a very old BSD tar) rather than a corrupt archive. Refusing to return a partial file list.`);this.line=n;this.name="TarListingParseError";}},hg={LC_ALL:"C",LANG:"C"};function yg(t){let e=[],n=[],r=[];for(let s of t.trim().split(`
225
+ `)){if(!s||s.startsWith("total "))continue;let o=s[0];if(o!=="-"&&o!=="d"&&o!=="l")throw new Error(`Archive contains unsupported entry type: "${o}"`);let c=s.match(/\d{2}:\d{2}\s+(.+)/)??s.match(/[A-Z][a-z]{2}\s+\d{1,2}\s+\d{4}\s+(.+)/);if(!c)throw new ni(s);let u=c[1];if(o==="l"){let l=u.indexOf(" -> ");l!==-1&&(u=u.slice(0,l)),e.push(u);}else o==="d"?n.push(u.replace(/\/$/,"")):r.push(u);}return {filePaths:r,dirPaths:n,symlinkPaths:[...new Set(e)]}}async function Ha(t){await ll();let{stdout:e}=await ri("tar",["-tvzf",t],{maxBuffer:al,env:{...process.env,...hg}}),{filePaths:n,dirPaths:r,symlinkPaths:s}=yg(e);return Qs(r),Qs(s),Qs(n)}async function ei(t,e,n){await ll(),await promises.mkdir(e,{recursive:true});let r=["-xzf",t,"--no-same-owner","--no-same-permissions","-C",e];n?.length&&r.push("--",...n),await ri("tar",r,{maxBuffer:al});}function bg(t){let e="^",n=0;for(;n<t.length;){let r=t[n];r==="*"&&t[n+1]==="*"?t[n+2]==="/"?(e+="(?:.*/)?",n+=3):(e+=".*",n+=2):r==="*"?(e+="[^/]*",n++):r==="?"?(e+="[^/]",n++):".+^${}()|[]\\".includes(r)?(e+="\\"+r,n++):(e+=r,n++);}return e+="$",new RegExp(e)}function ai(t,e){let n=nl(t,e);return cl(n)}function _g(t){let e=nl(t||{});return cl(e)}function cl(t){return {async listCheckpoints(e){let n=mg(e?.limit);return t.mode==="byok"?rl(t,{limit:n,tag:e?.tag}):sl(t,{limit:n,tag:e?.tag})},async getCheckpoint(e){return oi(t,e)},async downloadCheckpoint(e,n){let r=n?.extract!==false,s=n?.to||process.cwd(),o=await Ka(t,e),{tmpPath:c,metadata:u}=await za(t,o);try{if(r)return await promises.mkdir(s,{recursive:!0}),await Ha(c),await ei(c,s),s;{await promises.mkdir(s,{recursive:!0});let l=fe.join(s,`checkpoint-${u.id}.tar.gz`);return await promises.copyFile(c,l),l}}finally{await promises.unlink(c).catch(()=>{});}},async downloadFiles(e,n){let r=await Ka(t,e),{tmpPath:s}=await za(t,r),o;try{let c=await Ha(s),u;if(n?.files){let i=n.files.filter(d=>!ol(d));if(i.length>0)throw new Error(`Unsafe file path requested: ${i[0]}`);let a=new Set(n.files);u=c.filter(d=>a.has(d));}else if(n?.glob){let i=n.glob.map(bg);u=c.filter(a=>i.some(d=>d.test(a)));}else u=c;if(u.length===0)return {};o=fe.join(os$1.tmpdir(),`evolve-extract-${Date.now()}`);try{await ei(s,o,u);}catch(i){let a=i?.message??"";if(!a.includes("E2BIG")&&!a.includes("Argument list too long")&&!a.includes("ENAMETOOLONG"))throw i;await promises.rm(o,{recursive:!0,force:!0}).catch(()=>{}),o=fe.join(os$1.tmpdir(),`evolve-extract-${Date.now()}`),await ei(s,o);}let l={};return await Promise.all(u.map(async i=>{Va(o,i),l[i]=await promises.readFile(fe.join(o,i));})),n?.to&&(await promises.mkdir(n.to,{recursive:!0}),await Promise.all(Object.entries(l).map(async([i,a])=>{Va(n.to,i);let d=fe.join(n.to,i);await promises.mkdir(fe.dirname(d),{recursive:!0}),await promises.writeFile(d,a);}))),l}finally{o&&await promises.rm(o,{recursive:true,force:true}).catch(()=>{}),await promises.unlink(s).catch(()=>{});}}}}function Ce(t){return `'${t.replace(/'/g,"'\\''")}'`}function cr(t){return typeof t=="string"&&t.length>0}function st(t,e,n){let r=t[e];if(!cr(r))throw new Error(`withPlugins() for ${n} requires ${e}`);return r}function wg(t,e){let n=e.stderr||e.stdout||`exit code ${e.exitCode}`;return new Error(`Plugin setup failed while running: ${t}
226
+ ${n}`)}function kg(t,e){switch(t){case "droid":{let n=st(e,"marketplace",t),r=st(e,"plugin",t);return [`droid plugin marketplace add ${Ce(n)}`,`droid plugin install ${Ce(r)} --scope user`]}case "claude":{let n=st(e,"marketplace",t),r=st(e,"plugin",t);return [`claude plugin marketplace add ${Ce(n)} --scope user`,`claude plugin install ${Ce(r)} --scope user`]}case "gemini":{let n=st(e,"source",t),r=e,s=[`gemini extensions install ${Ce(n)}`];return cr(r.ref)&&s.push(`--ref ${Ce(r.ref)}`),r.autoUpdate===true&&s.push("--auto-update"),r.preRelease===true&&s.push("--pre-release"),s.push("--consent"),r.skipSettings===true&&s.push("--skip-settings"),[s.join(" ")]}case "codex":{if("plugin"in e)throw new Error("withPlugins() for codex registers marketplaces only; codex has no plugin install command");let n=st(e,"marketplace",t),r=e,s=[`codex plugin marketplace add ${Ce(n)}`];if(cr(r.ref)&&s.push(`--ref ${Ce(r.ref)}`),Array.isArray(r.sparse))for(let o of r.sparse){if(!cr(o))throw new Error("withPlugins() for codex requires sparse entries to be non-empty strings");s.push(`--sparse ${Ce(o)}`);}return [s.join(" ")]}default:throw new Error(`withPlugins() is not supported for ${t}`)}}async function dl(t,e,n){if(n?.length)for(let r of n){let s=kg(t,r);for(let o of s){let c=await e.commands.run(o,{timeoutMs:12e4});if(c.exitCode!==0)throw wg(o,c)}}}var ml="/home/user/.agent-browser",ul=`${ml}/config.json`,fl="/home/user/.actionbook",Sg=`${fl}/config.toml`;function pl(t){return t==="actionbook"||t==="agent-browser"}function xg(t){return t.remote===true}function gl(t){if(t==null)return;if(typeof t!="string")throw new Error("browser profile must be a string");let e=t.trim();if(!e)throw new Error("browser profile cannot be empty");return e}function hl(t){if(typeof t=="string"){if(t==="browser-use")return {provider:"browser-use",managed:false};if(pl(t))return {provider:t,managed:false};throw new Error("Unsupported browser configuration")}if(t.provider===void 0)return {provider:"agent-browser",managed:t.remote!==false,profile:gl(t.profile)};if(pl(t.provider))return {provider:t.provider,managed:xg(t),profile:gl(t.profile)};throw new Error("Unsupported browser configuration")}function li(t,e){return t==="actionbook"?{envs:{},files:[{path:Sg,data:smolToml.stringify({version:1,browser:{mode:"cloud",cdp_endpoint:e.cdpUrl}}).trimEnd()+`
227
+ `}],directories:[fl]}:{envs:{AGENT_BROWSER_CONFIG:ul},files:[{path:ul,data:`${JSON.stringify({cdp:e.cdpUrl},null,2)}
228
+ `}],directories:[ml]}}function yl(t){return (t?.dashboardUrl||M).replace(/\/$/,"")}async function bl(t){return await t.text().catch(()=>"")}async function _l(t,e,n={}){let r=await fetch(`${yl(t)}/api/browser-sessions`,{method:"POST",headers:{Authorization:`Bearer ${t.apiKey}`,"content-type":"application/json",accept:"application/json"},body:JSON.stringify({sessionTag:e,options:{remote:true},browserAuth:n.browserCredentials===true,...t.profile?{profile:t.profile}:{}}),signal:AbortSignal.timeout(3e4)});if(!r.ok)throw new Error(`Managed browser session create failed (${r.status}): ${await bl(r)}`);let s=await r.json();if(!s.id||!s.sessionId||!s.cdpUrl||!s.liveUrl)throw new Error("Managed browser session response missing id, sessionId, cdpUrl, or liveUrl");return {id:s.id,sessionId:s.sessionId,sessionTag:s.sessionTag,cdpUrl:s.cdpUrl,liveUrl:s.liveUrl,browserAuthGrantToken:s.browserAuthGrantToken}}async function wl(t,e){let n=await fetch(`${yl(t)}/api/browser-sessions/${encodeURIComponent(e.id)}`,{method:"DELETE",headers:{Authorization:`Bearer ${t.apiKey}`,accept:"application/json"},signal:AbortSignal.timeout(5e3)});if(!n.ok&&n.status!==404)throw new Error(`Managed browser session stop failed (${n.status}): ${await bl(n)}`)}var Eg="RSA-OAEP-256",ci="browser-login";function Tg(t){return (t||process.env.EVOLVE_DASHBOARD_URL||M).replace(/\/$/,"")}function Pg(t){let e=t||process.env.EVOLVE_API_KEY;if(!e)throw new Error("Browser credentials require EVOLVE_API_KEY or an explicit apiKey");return e}async function Ag(t){return await t.text().catch(()=>"")}async function Ft(t,e,n={}){let r=await fetch(`${Tg(t?.dashboardUrl)}${e}`,{...n,headers:{Authorization:`Bearer ${Pg(t?.apiKey)}`,accept:"application/json",...n.body?{"content-type":"application/json"}:{},...n.headers||{}}});if(!r.ok)throw new Error(`Browser credentials request failed (${r.status}): ${await Ag(r)}`);return await r.json()}async function Ig(t,e){let n=await Ft(t,"/api/browser-credentials/public-key"),r=crypto.publicEncrypt({key:n.publicKey,padding:crypto.constants.RSA_PKCS1_OAEP_PADDING,oaepHash:"sha256"},Buffer.from(e,"utf8"));return {algorithm:Eg,keyId:n.id,ciphertext:r.toString("base64url")}}var dr=class{constructor(e={}){this.config=e;}toMetadata(e){let{account_label:n,...r}=e;return {...r,accountLabel:n}}async list(e={}){let n=new URLSearchParams;e.website&&n.set("website",e.website),e.limit!==void 0&&n.set("limit",String(e.limit)),e.offset!==void 0&&n.set("offset",String(e.offset));let r=n.toString()?`?${n.toString()}`:"",s=await Ft(this.config,`/api/browser-credentials${r}`);return {credentials:s.credentials.map(o=>this.toMetadata(o)),total:s.total,count:s.count,offset:s.offset,hasMore:s.has_more??s.offset+s.count<s.total}}async create(e){let n=await Ig(this.config,e.password),r=await Ft(this.config,"/api/browser-credentials",{method:"POST",body:JSON.stringify({website:e.website,account_label:e.accountLabel,email:e.email,encryptedPassword:n})});return {status:r.status,credential:this.toMetadata(r.credential)}}async delete(e){let n="id"in e?e:{website:e.website,account_label:e.accountLabel};return await Ft(this.config,"/api/browser-credentials",{method:"DELETE",body:JSON.stringify(n)})}};function di(t={}){return new dr(t)}async function kl(t){return (await Ft({apiKey:t.apiKey,dashboardUrl:t.dashboardUrl},"/api/browser-login/mcp-config",{method:"POST",body:JSON.stringify({browserSessionId:t.browserSessionId,sessionTag:t.sessionTag,grantToken:t.grantToken,allow:Og(t.config)})})).server}function Og(t){return t?.allow?.map(e=>({website:e.website,...e.accountLabel||e.account_label?{account_label:e.accountLabel||e.account_label}:{}}))}var ur="x-evolve-provider-runtime-binding";function Mg(t){return (t||process.env.EVOLVE_DASHBOARD_URL||M).replace(/\/$/,"")}async function Dg(t){return await t.text().catch(()=>"")}var Nt=class extends Error{constructor(n,r){super(r);this.status=n;this.name="ProviderRuntimeTokenRequestError";}};function vl(t){return t instanceof Nt&&t.status===404}async function ui(t,e,n={}){let r=await fetch(`${Mg(t.dashboardUrl)}${e}`,{...n,headers:{Authorization:`Bearer ${t.apiKey}`,accept:"application/json",...n.body?{"content-type":"application/json"}:{},...n.headers||{}}});if(!r.ok)throw new Nt(r.status,`Provider runtime token request failed (${r.status}): ${await Dg(r)}`);return await r.json()}function Ug(t){if(!t||typeof t!="object"||Array.isArray(t))return false;let e=t;return e.enabled===true&&(e.provider==="anthropic"||e.provider==="openai"||e.provider==="gemini"||e.provider==="dashscope"||e.provider==="kimi"||e.provider==="openrouter"||e.provider==="droid"||e.provider==="pi"||e.provider==="prime-agent"||e.provider==="dsh"||e.provider==="zcode"||e.provider==="antigravity")&&(e.credentialMode==="provider_key"||e.credentialMode==="evolve_key")&&typeof e.token=="string"&&e.token.length>0&&typeof e.bindingSecret=="string"&&e.bindingSecret.length>0&&typeof e.baseUrl=="string"&&e.baseUrl.length>0&&typeof e.expiresAt=="string"&&e.expiresAt.length>0}async function Sl(t,e){let n=await ui(t,"/api/provider-secrets/runtime-token",{method:"POST",body:JSON.stringify(e)});if(!Ug(n))throw new Nt(502,"Provider runtime token response was invalid");return n}async function xl(t,e){return (await ui(t,"/api/provider-secrets/runtime-token",{method:"PATCH",body:JSON.stringify(e)})).ok}async function Rl(t,e){return (await ui(t,"/api/provider-secrets/runtime-token",{method:"DELETE",body:JSON.stringify(e)})).ok}fi();Tt();var Ml=["QUEUED","RUNNING","SCORING","SCORED","SCORING_ERROR","INFRASTRUCTURE_ERROR","BUDGET","INDETERMINATE","CANCELLED"],Dl=["e2b","daytona","modal"],Ul=["my","shared","org"],$l=["job","check","all"],Ll=["queued","running","completed","failed"],Fl=["queued","running","completed"];function it(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t;if(typeof e.provisional!="boolean")return null;let n=r=>typeof r=="number"&&Number.isFinite(r)?r:null;return {provisional:e.provisional,spent_usd:n(e.spent_usd),input_tokens:n(e.input_tokens),cached_input_tokens:n(e.cached_input_tokens),cache_write_tokens:n(e.cache_write_tokens),output_tokens:n(e.output_tokens),as_of:typeof e.as_of=="string"?e.as_of:null}}function Nl(t){let e=t.stats?.evals??{},n=[];for(let r of Object.keys(e).sort()){let s=e[r]?.pass_at_k??{},o=[];for(let c of Object.keys(s)){let u=Number(c),l=s[c];!Number.isFinite(u)||typeof l!="number"||!Number.isFinite(l)||o.push({k:u,value:l});}o.length!==0&&(o.sort((c,u)=>c.k-u.k),n.push({evals_key:r,points:o}));}return n}var gr=["dataset_flag","job_dataset_record","task_hash","none"],mr=["hash_mismatch","task_not_in_dataset","no_dataset_named","dataset_ambiguous","no_hash_match","no_task_digest"];function le(t){let e=t.link??{};return {visibility:t.visibility==="LINK"?"LINK":"PRIVATE",link:{enabled:e.enabled===true,...typeof e.url=="string"?{url:e.url}:{}},emails:(Array.isArray(t.emails)?t.emails:[]).map(n=>{let r=n;return {email:String(r.email??""),shared_by:String(r.shared_by??""),created_at:String(r.created_at??"")}})}}var fr=1e9;function hr(t){let e=t.data?.update;if(!e||typeof e!="object"||Array.isArray(e))return null;let n=e;if(n.sessionUpdate!=="usage"||n.source!=="gateway")return null;let r=n.usage;return !r||typeof r!="object"||Array.isArray(r)?null:n}function Jt(t,e,n){if(t!=null){if(!Array.isArray(t)||t.some(r=>typeof r!="string"))throw new Error(`${n} storedAt is not a list of date-time strings`);if(t.length!==e)throw new Error(`${n} storedAt has ${t.length} entries for ${e} events (one per event, index-aligned)`);return t}}var Bl=["trace-parsed","verifier","trace-stdout","trace-stderr","trace-atif","trajectory","agent-home","filesystem"],jl=["agent","verifier","setup","system","metrics"],Jl=["trace-stdout","trace-stderr","agent-home"],hi=["missing_authorization","invalid_api_key","read_only_key","credential_service_unavailable","rate_limited","insufficient_credits","quota_exceeded","invalid_json","invalid_input","invalid_limit","invalid_status","invalid_visibility","invalid_cursor","invalid_after","invalid_format","invalid_ids","invalid_multipart","idempotency_key_reused","dataset_not_found","dataset_version_not_found","dataset_name_taken","dataset_in_use","dataset_not_owned","dataset_import_in_progress","upstream_not_watchable","no_active_version","version_not_ready","version_not_activatable","unknown_task_names","no_tasks","task_not_found","task_failed_to_build","upload_session_not_found","upload_offset_mismatch","upload_chunk_digest_mismatch","upload_incomplete","upload_archive_digest_mismatch","upload_session_failed","too_many_concurrent_upload_chunks","agent_not_found","agent_name_taken","agent_name_reserved","agent_invalid_name","agent_source_required","agent_source_conflict","agent_invalid_env","agent_too_large","agent_limit_reached","skill_not_found","skill_name_not_found","skill_ref_invalid","skill_unresolvable","skill_invalid","skill_in_use","skill_too_large","skill_limit_reached","too_many_concurrent_skill_uploads","secret_not_found","secret_ambiguous","secret_brokered_unsupported","secret_exists","secret_not_attached","agent_version_not_found","agent_version_unresolvable","agent_kwarg_unsupported","agent_config_unsupported","agent_config_key_refused","agent_preset_unsupported","agent_retired","provider_unsupported","job_not_found","job_not_terminal","no_failed_trials","trial_not_found","trial_not_settled","concurrent_update","regrade_source_ineligible","no_regradable_trials","invalid_rubric","analysis_already_running","analysis_not_found","analysis_not_terminal","check_not_found","check_not_terminal","no_checkable_tasks","too_many_concurrent_check_uploads","no_analyzable_trials","session_not_found","not_a_job_dir","invalid_trial","trial_too_large","upload_too_large","job_uploaded","job_already_uploaded","too_many_concurrent_job_uploads","job_import_not_found","import_not_found","import_too_large","too_many_concurrent_imports","invalid_archive","unpinned_git_ref","hub_package_not_found","hub_unreachable","package_not_retained","package_corrupt","package_missing","too_many_concurrent_package_downloads","org_not_found","org_slug_taken","org_forbidden","org_personal_immutable","org_last_owner","org_in_use","org_member_not_found","invite_not_found","invite_invalid","not_found","not_captured","filesystem_state","feature_unsupported","provider_unreachable","task_package_not_retained","internal_error"];function yr(t){return typeof t=="string"&&hi.includes(t)}var Kl=["level","binary","none"];function Gg(t,e,n){return t==="measured"&&e===0&&n.every(r=>(r??null)===null)}function zg(t,e,n){return typeof t!="number"||!Number.isFinite(t)?{lane:"unmeasured"}:e==="measured"?Gg(e,t,n)?{lane:"unmeasured"}:{lane:"measured",usd:t}:e==="measured_provisional"?{lane:"floor",usd:t}:{lane:"unmeasured"}}function yi(t){let e=t.agent_result;return zg(e?.cost_usd,t.spend_source,[e?.n_input_tokens,e?.n_cache_tokens,e?.n_output_tokens])}var bi={stdoutFile:"stdout.log",harborCopies:[]},_r={claude:{stdoutFile:"claude-code.txt",harborCopies:[{sandboxRoot:"/root/.claude",agentDir:"sessions"}]},codex:{stdoutFile:"codex.txt",harborCopies:[{sandboxRoot:"/root/.codex/sessions",agentDir:"sessions"}]},gemini:{stdoutFile:"gemini-cli.txt",harborCopies:[]},qwen:{stdoutFile:"qwen-code.txt",harborCopies:[{sandboxRoot:"/root/.qwen/projects",agentDir:"qwen-sessions"}]},kimi:{stdoutFile:"kimi-code.txt",harborCopies:[]},opencode:{stdoutFile:"opencode.txt",harborCopies:[{sandboxRoot:"/root/.local/share/opencode",agentDir:"opencode/xdg-data/opencode"}]},droid:{stdoutFile:"droid.txt",harborCopies:[]},pi:{stdoutFile:"pi.txt",harborCopies:[{sandboxRoot:"/root/.pi/agent/sessions",agentDir:"pi/sessions"}]},"prime-agent":{stdoutFile:"prime-agent.txt",harborCopies:[]},dsh:{stdoutFile:"dsh.txt",harborCopies:[]},zcode:{stdoutFile:"zcode.txt",harborCopies:[]},antigravity:{stdoutFile:"antigravity-stream.jsonl",harborCopies:[]}},Hg={"claude-code":"claude",codex:"codex","gemini-cli":"gemini","qwen-coder":"qwen","kimi-code":"kimi",opencode:"opencode","antigravity-cli":"antigravity"};function _i(t){let e=t in _r?t:Hg[t];return e===void 0?bi:_r[e]}var qg="/logs/agent",Wg="agent-home.json";function wi(t){let e=Vl(qg,t);if(e!==null)return e;let n=t.replace(/^\/+/,"");if(n===Wg)return n;let r=/^(?:root|home\/[^/]+)\/(.+)$/.exec(n);return r!==null?r[1]:`sessions/${n}`}function Vl(t,e){return e.startsWith(`${t}/`)?e.slice(t.length+1):null}function ki(t,e){let n=wi(e),r=e.replace(/^\/+/,"");t.has(n)&&(n=r);for(let s=2;t.has(n);s++)n=`${r}.${s}`;return t.add(n),n}function vi(t,e){for(let n of t.harborCopies){let r=Vl(n.sandboxRoot,e);if(r!==null)return `${n.agentDir}/${r}`}return null}function Yg(t,e){let n=new Set,r={};for(let s of Object.keys(e).sort()){r[`agent/${ki(n,s)}`]=e[s];let o=vi(t,s);o!==null&&!n.has(o)&&(n.add(o),r[`agent/${o}`]=e[s]);}return Object.fromEntries(Object.keys(r).sort().map(s=>[s,r[s]]))}function br(t){return JSON.stringify(t,null,2)+`
229
+ `}function Si(t,e,n){return {trial_id:t.id,job_id:t.job_id,user_id:n,provider:t.sandbox_provider,gateway:{cost_usd:t.agent_result?.cost_usd??null,n_input_tokens:t.agent_result?.n_input_tokens??null,n_cache_tokens:t.agent_result?.n_cache_tokens??null,n_output_tokens:t.agent_result?.n_output_tokens??null,spend_source:t.spend_source,max_trial_spend_usd:t.max_trial_spend_usd,judge:t.judge_result?{cost_usd:t.judge_result.cost_usd,n_input_tokens:t.judge_result.n_input_tokens,n_cache_tokens:t.judge_result.n_cache_tokens,n_output_tokens:t.judge_result.n_output_tokens,spend_source:t.judge_spend_source??null}:null},regrade_lineage:{is_regrade:e?.is_regrade??false,source_jobs:e?.source_jobs??[],n_retries:t.n_retries,retries:t.retries}}}function Gl(t,e){return {job_id:t.id,user_id:e,provider:t.sandbox_provider,gateway:{cost_usd:t.stats.cost_usd??null,judge_cost_usd:t.stats.judge_cost_usd??null,n_unmeasured_trials:t.stats.n_unmeasured_trials??null,n_unmeasured_judge_trials:t.stats.n_unmeasured_judge_trials??null,n_input_tokens:t.stats.n_input_tokens??null,n_cache_tokens:t.stats.n_cache_tokens??null,n_output_tokens:t.stats.n_output_tokens??null,max_trial_spend_usd:t.max_trial_spend_usd,worst_case_spend_usd:t.worst_case_spend_usd},regrade_lineage:{is_regrade:t.is_regrade,source_jobs:t.source_jobs}}}function Zg(t){let e=t.agent_result;return e==null?e??null:yi(t).lane==="measured"?e:{...e,cost_usd:null}}function zl(t){let{trial:e}=t,n={};n["config.json"]=br({trial_name:e.id,task:{name:e.task_name,source:e.source},agent:{name:e.agent_info.name,version:e.agent_info.version,model_name:e.agent_info.model_info.name,reasoning_effort:e.agent_info.reasoning_effort}}),n["result.json"]=br({trial_name:e.id,task_name:e.task_name,status:e.status,reward:e.reward,verifier_result:e.verifier_result,exception_info:e.exception_info,agent_result:Zg(e),started_at:e.started_at,finished_at:e.finished_at,environment_setup:e.environment_setup,agent_setup:e.agent_setup,agent_execution:e.agent_execution,verifier:e.verifier});let r=_i(e.agent_info.name);return t.atif!==null&&(n["agent/trajectory.json"]=t.atif),t.stdout!==null&&(n[`agent/${r.stdoutFile}`]=t.stdout),t.stderr!==null&&(n["agent/stderr.log"]=t.stderr),t.events.length>0&&(n["agent/trace-parsed.jsonl"]=t.events.map(s=>JSON.stringify(s)).join(`
225
230
  `)+`
226
- `),t.home!==null&&Object.assign(n,Iu(r,t.home)),t.verifierLog!==null&&(n["verifier/test-stdout.txt"]=t.verifierLog),e.verifier_result?.rewards&&(n["verifier/reward.json"]=Cn(e.verifier_result.rewards)),e.exception_info&&(n["exception.txt"]=`${e.exception_info.exception_type}: ${e.exception_info.exception_message}
227
- `),n["evolve.json"]=Cn(ks(e,t.job,t.userId)),n}function xa(t,e){return {analysis_id:t.id,analyzed_trial_id:t.trial_id,job_id:t.job_id,task_name:t.task_name,user_id:e,status:t.status,model_name:t.model_name,gateway:{cost_usd:t.estimated_cost_usd,n_input_tokens:t.usage?.input_tokens??null,n_cache_tokens:t.usage?.cached_input_tokens??null,n_output_tokens:t.usage?.output_tokens??null}}}function Ca(t,e,n){return {task_check_id:t.id,check_id:e.id,dataset:e.source.dataset,task_name:t.task_name,user_id:n,provider:e.sandbox_provider,status:t.status,model_name:e.model_name,gateway:{cost_usd:t.cost_usd}}}function Ra(t,e){return {check_id:t.id,user_id:e,source:t.source,provider:t.sandbox_provider,status:t.status,model_name:t.model_name,gateway:{cost_usd:t.cost_usd}}}Ss();var L=class extends Error{status;code;param;details;retryAfterSec;requestId;constructor(e,n,r,s){super(r),this.name="EvolveApiError",this.status=e,this.code=n,s?.param!==void 0&&(this.param=s.param),s?.details!==void 0&&(this.details=s.details),s?.retryAfterSec!==void 0&&(this.retryAfterSec=s.retryAfterSec),s?.requestId!==void 0&&(this.requestId=s.requestId);}isKnownCode(){return xn(this.code)}};async function Tt(t){let e=await t.text().catch(()=>""),n=t.headers?.get?.("x-request-id")??void 0,r=yt(e,t);try{let s=JSON.parse(e);if(s?.error&&typeof s.error=="object"){let a=typeof s.error.code=="string"?s.error.code:"unknown_error",d=typeof s.error.message=="string"?s.error.message:t.statusText;throw new L(t.status,a,d,{param:typeof s.error.param=="string"?s.error.param:void 0,details:s.error.details&&typeof s.error.details=="object"?s.error.details:void 0,retryAfterSec:r,requestId:typeof s.error.requestId=="string"?s.error.requestId:n})}if(typeof s?.error=="string")throw new L(t.status,"unknown_error",s.error,{retryAfterSec:r,requestId:n})}catch(s){if(s instanceof L)throw s}throw new L(t.status,"unknown_error",e||t.statusText,{retryAfterSec:r,requestId:n})}var In=class extends Error{dataset;constructor(e){super(`Dataset "${e}" has no active version`),this.name="NoActiveVersionError",this.dataset=e;}},xt=class extends Error{name="ImportSettleError";code;importId;dataset;version;state;constructor(e,n,r){super(n),this.code=e,this.importId=r.importId,this.dataset=r.dataset,this.version=r.version,this.state=r.state;}},zu=1e3,St=3e4,Hu=new Set(["COMPLETED","CANCELLED","FAILED"]),Wu=new Set(["job.completed","job.cancelled","job.failed"]),Ct=2e3,Yu=30*6e4;function pe(t,e){let n=e?.apiKey||process.env[O];if(!n)throw new Error(`${t}() requires an API key. Set ${O} or pass { apiKey } in config.`);let r=(e?.baseUrl||process.env.EVOLVE_DASHBOARD_URL||T).replace(/\/$/,"");return {apiKey:n,baseUrl:r,...e?.org?{org:e.org}:{}}}async function k(t,e,n){let r=await fetch(`${t.baseUrl}${e}`,{...n,headers:{Authorization:`Bearer ${t.apiKey}`,...n?.headers}});return r.ok||await Tt(r),r}function En(t){let e=t.indexOf("@");if(e===-1)return {name:t.trim()};let n=t.slice(0,e).trim(),r=t.slice(e+1).trim();if(!n||!r)throw new Error(`Invalid dataset ref "${t}": expected "name" or "name@version"`);return {name:n,version:r}}function Ts(t){return {name:t.name,version:t.version}}function Oa(t){let e=t.kwargs,n=Array.isArray(t.skills)?t.skills.filter(a=>typeof a=="string"):[],r=Array.isArray(t.skill_locks)?t.skill_locks:null,s=r?r.flatMap(a=>{if(!a||typeof a!="object")return [];let d=a;return typeof d.name!="string"||typeof d.digest!="string"?[]:[{name:d.name,source:typeof d.source=="string"?d.source:"",digest:d.digest,git_url:typeof d.git_url=="string"?d.git_url:null,git_commit_id:typeof d.git_commit_id=="string"?d.git_commit_id:null}]}):null;return {name:t.name,model_name:t.model_name,version:t.version??null,reasoning_effort:t.reasoning_effort??null,kwargs:e&&typeof e=="object"&&!Array.isArray(e)?e:null,preset:typeof t.preset=="string"?t.preset:null,skills:n,skill_locks:s}}function Xu(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t;if(typeof e.name!="string")return null;let n=Array.isArray(e.authors)?e.authors.flatMap(r=>{if(!r||typeof r!="object"||Array.isArray(r))return [];let s=r;return typeof s.name!="string"?[]:[{name:s.name,email:typeof s.email=="string"?s.email:null}]}):[];return {name:e.name,version:typeof e.version=="string"?e.version:null,description:typeof e.description=="string"?e.description:"",authors:n,keywords:Array.isArray(e.keywords)?e.keywords.filter(r=>typeof r=="string"):[],task_count:typeof e.task_count=="number"?e.task_count:null}}function Qu(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t,n=s=>typeof e[s]=="string"?e[s]:null;switch(n("kind")??(n("commit")!==null?"git":null)){case "git":{let s=n("ref"),a=n("commit");return s===null||a===null?null:{kind:"git",git_url:n("git_url"),ref:s,commit:a,path:n("path")}}case "archive":{let s=n("digest");return s===null?null:{kind:"archive",digest:s}}case "archive_url":{let s=n("archive_url"),a=n("digest");return s===null||a===null?null:{kind:"archive_url",archive_url:s,digest:a}}case "hub_package":{let s=n("hub_package"),a=n("digest");return s===null||a===null?null:{kind:"hub_package",hub_package:s,digest:a}}default:return null}}function Ne(t){return {version:t.version,state:t.state,created_at:t.created_at,task_count:t.task_count??0,n_failed_tasks:typeof t.n_failed_tasks=="number"?t.n_failed_tasks:0,manifest:Xu(t.manifest),source:Qu(t.source)}}function Ma(t){return {code:t.code??"",step:t.step??"",message:t.message??"",excerpt:t.excerpt??null}}function Zu(t){return Array.isArray(t)?t.filter(e=>e&&typeof e=="object").map(e=>({task_name:e.task_name??"",failure:Ma(e.failure??{})})):[]}function ep(t){return {task_name:t.task_name,agent_timeout_sec:t.agent_timeout_sec,verifier_timeout_sec:t.verifier_timeout_sec,gpus:typeof t.gpus=="number"&&t.gpus>0?t.gpus:0,gpu_types:Array.isArray(t.gpu_types)&&t.gpu_types.length>0?t.gpu_types.map(String):null,providers:t.providers,notes:Array.isArray(t.notes)?t.notes:[]}}function tp(t){return {action:t.action,type:t.type,job_id:t.job_id}}function np(t){let e=t&&typeof t=="object"?t:{};return {max_retries:typeof e.max_retries=="number"?e.max_retries:0,include_exceptions:Array.isArray(e.include_exceptions)?e.include_exceptions:null,exclude_exceptions:Array.isArray(e.exclude_exceptions)?e.exclude_exceptions:[],wait_multiplier:typeof e.wait_multiplier=="number"?e.wait_multiplier:1,min_wait_sec:typeof e.min_wait_sec=="number"?e.min_wait_sec:1,max_wait_sec:typeof e.max_wait_sec=="number"?e.max_wait_sec:60}}function rp(t){return {attempt_number:t.attempt_number,exception_info:t.exception_info??{exception_type:"InfrastructureError",exception_message:""},cost_usd:t.cost_usd??null,started_at:t.started_at??null,settled_at:t.settled_at??null}}function vt(t){return typeof t=="number"?t:null}function sp(t){return Array.isArray(t)?t.filter(e=>e&&typeof e=="object").map(e=>{let n=typeof e.n_tasks_ran=="number"?e.n_tasks_ran:0;return {dataset:Ts(e.dataset??{}),n_tasks_ran:n,n_tasks_selected:typeof e.n_tasks_selected=="number"?e.n_tasks_selected:n,n_tasks_failed_to_build:typeof e.n_tasks_failed_to_build=="number"?e.n_tasks_failed_to_build:0,failed_task_names:Array.isArray(e.failed_task_names)?e.failed_task_names.map(String):[],note:e.note??""}}):[]}function ip(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t;if(typeof e.uploaded_at!="string")return null;let n=e.reported_totals,r=a=>typeof a=="number"&&Number.isFinite(a)?a:null,s=n&&typeof n=="object"&&!Array.isArray(n)&&Number.isInteger(n.n_trials_reporting)?{cost_usd:r(n.cost_usd),n_input_tokens:r(n.n_input_tokens),n_cache_tokens:r(n.n_cache_tokens),n_output_tokens:r(n.n_output_tokens),n_trials_reporting:n.n_trials_reporting}:null;return {original_job_id:typeof e.original_job_id=="string"?e.original_job_id:null,original_job_name:typeof e.original_job_name=="string"?e.original_job_name:null,uploaded_at:e.uploaded_at,reported_totals:s,task_links:Ua(e.task_links),datasets:op(e.datasets)}}var Da=t=>typeof t=="string"&&wn.includes(t),Cs=t=>typeof t=="string"&&kn.includes(t),Rs=t=>Array.isArray(t)&&t.every(e=>typeof e=="string")?[...t]:null;function Ua(t){if(!Array.isArray(t))return null;let e=[];for(let n of t){if(!n||typeof n!="object"||Array.isArray(n))return null;let r=n;if(typeof r.task_name!="string"||!Da(r.linked_by)||![r.n_trials,r.n_linked,r.n_unlinked].every(c=>Number.isInteger(c)&&c>=0))return null;let a=Rs(r.datasets),d=Rs(r.candidates);if(a===null||d===null||!r.link_reasons||typeof r.link_reasons!="object"||Array.isArray(r.link_reasons))return null;let u={};for(let[c,i]of Object.entries(r.link_reasons)){if(!Cs(c)||!Number.isInteger(i))return null;u[c]=i;}e.push({task_name:r.task_name,n_trials:r.n_trials,n_linked:r.n_linked,n_unlinked:r.n_unlinked,linked_by:r.linked_by,datasets:a,link_reasons:u,candidates:d});}return e}function op(t){if(!Array.isArray(t)||t.length===0)return null;let e=[];for(let n of t){if(typeof n!="object"||n===null)return null;let{name:r,version:s,path:a}=n;if(!(r===void 0&&typeof a=="string")){if(typeof r!="string"||r==="")return null;e.push({name:r,version:typeof s=="string"?s:null});}}return e.length>0?e:null}function ap(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t;if(!Da(e.linked_by)||e.link_reason!==null&&e.link_reason!==void 0&&!Cs(e.link_reason))return null;let n=e.candidates===void 0?[]:Rs(e.candidates);return n===null?null:{linked_by:e.linked_by,link_reason:Cs(e.link_reason)?e.link_reason:null,dataset:typeof e.dataset=="string"?e.dataset:null,version:typeof e.version=="string"?e.version:null,task_digest:typeof e.task_digest=="string"?e.task_digest:null,candidates:n}}var lp=["creator","member","shared","link"];function cp(t){return typeof t=="string"&&lp.includes(t)}function te(t){let e=t.trials??{};return {kind:"job",id:t.id,job_name:t.job_name,status:t.status,datasets:(t.datasets??[]).map(Ts),agents:(t.agents??[]).map(Oa),n_attempts:t.n_attempts,n_concurrent_trials:t.n_concurrent_trials,max_trial_spend_usd:t.max_trial_spend_usd,worst_case_spend_usd:t.worst_case_spend_usd,retry:np(t.retry),analyze:t.analyze&&typeof t.analyze=="object"&&!Array.isArray(t.analyze)?t.analyze:null,timeout_multiplier:typeof t.timeout_multiplier=="number"?t.timeout_multiplier:1,agent_timeout_multiplier:vt(t.agent_timeout_multiplier),verifier_timeout_multiplier:vt(t.verifier_timeout_multiplier),agent_setup_timeout_multiplier:vt(t.agent_setup_timeout_multiplier),environment_build_timeout_multiplier:vt(t.environment_build_timeout_multiplier),sandbox_provider:t.sandbox_provider??null,org:typeof t.org=="string"?t.org:null,visibility:t.visibility==="LINK"?"LINK":"PRIVATE",viewer:cp(t.viewer)?t.viewer:null,system_log:t.system_log===true,counts:t.counts,build_exclusions:sp(t.build_exclusions),n_total_trials:t.n_total_trials??0,trials:{total:e.total??0,byStatus:e.byStatus??{}},stats:t.stats??{},failure:t.failure??null,source_jobs:(t.source_jobs??[]).map(tp),is_regrade:t.is_regrade===true,upload:ip(t.upload),idempotent_replay:t.idempotent_replay===true,started_at:t.started_at,updated_at:t.updated_at,finished_at:t.finished_at??null}}function F(t,e){let n=t??{};return {items:Array.isArray(n.items)?n.items.map(e):[],nextCursor:n.nextCursor??null,hasMore:n.hasMore===true}}function z(t,e){let n=new URLSearchParams;t?.limit!==void 0&&n.set("limit",String(t.limit)),t?.cursor&&n.set("cursor",t.cursor);for(let[s,a]of Object.entries(e??{}))a!==void 0&&n.set(s,a);let r=n.toString();return r?`?${r}`:""}function me(t){if(!t||typeof t!="object")return null;let e=t;return {started_at:e.started_at??null,finished_at:e.finished_at??null}}function dp(t){let e=t.model_info??{};return {name:t.name,version:t.version??null,model_info:{name:e.name,provider:e.provider??null},reasoning_effort:t.reasoning_effort??null}}function On(t){return !t||typeof t!="object"||Array.isArray(t)?null:{...t,usage:Fe(t.usage)}}function up(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let{from:e,to:n,reason:r}=t;return typeof e!="string"||typeof n!="string"||typeof r!="string"?null:{from:e,to:n,reason:r}}function Es(t){return {id:t.id,job_id:t.job_id,task_name:t.task_name,source:t.source,agent_info:dp(t.agent_info||{}),attempt:t.attempt,status:t.status,reward:t.reward??null,verifier_result:t.verifier_result??null,exception_info:t.exception_info??null,agent_result:t.agent_result??null,judge_result:t.judge_result??null,analysis:On(t.analysis),environment_setup:me(t.environment_setup),agent_setup:me(t.agent_setup),agent_execution:me(t.agent_execution),verifier:me(t.verifier),queue_wait:me(t.queue_wait),harness_bundle:me(t.harness_bundle),image_prepare:me(t.image_prepare),shared_verify_setup:me(t.shared_verify_setup),harness_bundle_cache_hit:typeof t.harness_bundle_cache_hit=="boolean"?t.harness_bundle_cache_hit:null,step_results:t.step_results??null,spend_source:t.spend_source??null,judge_spend_source:t.judge_spend_source??null,live_spent_usd:t.live_spent_usd??null,live_spend_at:t.live_spend_at??null,usage:Fe(t.usage),max_trial_spend_usd:t.max_trial_spend_usd??null,sandbox_provider:t.sandbox_provider??null,sandbox_provider_degrade:up(t.sandbox_provider_degrade),gpu_cost:t.gpu_cost&&typeof t.gpu_cost=="object"&&!Array.isArray(t.gpu_cost)?t.gpu_cost:null,sandbox_id:t.sandbox_id??null,verifier_sandbox_id:t.verifier_sandbox_id??null,verifier_environment_mode:t.verifier_environment_mode??null,attempt_phase:t.attempt_phase??null,n_retries:t.n_retries??0,retries:Array.isArray(t.retries)?t.retries.map(rp):[],session_ref:t.session_ref??null,upload:pp(t.upload),started_at:t.started_at??null,finished_at:t.finished_at??null}}function pp(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t;if(typeof e.original_trial_name!="string"||typeof e.original_task_name!="string")return null;let n=e.reported_agent_result,r=s=>typeof s=="number"&&Number.isFinite(s)?s:null;return {original_trial_id:typeof e.original_trial_id=="string"?e.original_trial_id:null,original_trial_name:e.original_trial_name,original_task_name:e.original_task_name,reported_agent_result:n&&typeof n=="object"&&!Array.isArray(n)?{n_input_tokens:r(n.n_input_tokens),n_cache_tokens:r(n.n_cache_tokens),n_output_tokens:r(n.n_output_tokens),cost_usd:r(n.cost_usd)}:null,link:ap(e.link)}}function Tn(t){return {name:t.name,org:typeof t.org=="string"?t.org:null,source:t.source,run_command:t.run_command,env:t.env??{},created_at:t.created_at,updated_at:t.updated_at}}function je(t){let e={id:t.id,status:t.status,name:t.name,version:t.version,failure:t.failure??null,warnings:t.warnings??[],progress:t.progress??null};return typeof t.receiving=="boolean"&&(e.receiving=t.receiving),typeof t.task_count=="number"&&(e.task_count=t.task_count),typeof t.created_at=="string"&&(e.created_at=t.created_at),typeof t.updated_at=="string"&&(e.updated_at=t.updated_at),e}function kt(t){let e={id:t.id,status:t.status,receiving:t.receiving===true,source:t.source??null,dataset:t.dataset??null,job_id:t.job_id??null,n_trials_uploaded:t.n_trials_uploaded??null,n_trials_skipped:t.n_trials_skipped??null,skipped_trials:Array.isArray(t.skipped_trials)?t.skipped_trials:null,task_links:Ua(t.task_links),failure:t.failure??null,progress:t.progress??null};return typeof t.created_at=="string"&&(e.created_at=t.created_at),typeof t.updated_at=="string"&&(e.updated_at=t.updated_at),e}function La(t){let e=t??{};return {scored:e.scored??0,total:e.total??0}}function gp(t){return {id:t.id,datasets:(t.datasets??[]).map(Ts),status:t.status,mean_reward:t.mean_reward??null,coverage:La(t.coverage),cost_usd:t.cost_usd??0,agents:(t.agents||[]).map(Oa),started_at:t.started_at}}function mp(t){return {job_id:t.job_id,status:t.status,mean_reward:t.mean_reward??null,coverage:La(t.coverage)}}function fp(t){return {task_name:t.task_name,disagreement:t.disagreement===true,cells:(t.cells||[]).map(mp)}}function $a(t){return {seq:t.seq,type:t.type,data:t.data??{}}}function Fa(t){return (Array.isArray(t)?t:[]).map((n,r)=>({seq:vn+r,type:"usage",data:n&&typeof n=="object"&&!Array.isArray(n)?n:{}}))}function hp(t){return {trial_id:t.trial_id,task_name:t.task_name??null,match_count:t.match_count,events:(t.events||[]).map($a)}}function Ps(t){return t?t.suffix!==void 0?`bytes=-${t.suffix}`:t.start===void 0?null:`bytes=${t.start}-${t.end??""}`:null}function fe(t){if(t?.aborted)throw t.reason instanceof Error?t.reason:new Error("Watch aborted")}function Pa(t,e){return e?.aborted?true:t?.name==="AbortError"}function J(t,e){return new Promise((n,r)=>{let s=setTimeout(()=>{e?.removeEventListener("abort",a),n();},t),a=()=>{clearTimeout(s),r(e?.reason instanceof Error?e.reason:new Error("Watch aborted"));};e?.addEventListener("abort",a,{once:true});})}function Ba(t){let e="",n=false;return {push(r){n&&(r="\r"+r,n=false),r.endsWith("\r")&&(r=r.slice(0,-1),n=true),e+=r.replace(/\r\n|\r/g,`
231
+ `),t.home!==null&&Object.assign(n,Yg(r,t.home)),t.verifierLog!==null&&(n["verifier/test-stdout.txt"]=t.verifierLog),e.verifier_result?.rewards&&(n["verifier/reward.json"]=br(e.verifier_result.rewards)),e.exception_info&&(n["exception.txt"]=`${e.exception_info.exception_type}: ${e.exception_info.exception_message}
232
+ `),n["evolve.json"]=br(Si(e,t.job,t.userId)),n}function Hl(t,e){return {analysis_id:t.id,analyzed_trial_id:t.trial_id,job_id:t.job_id,task_name:t.task_name,user_id:e,status:t.status,model_name:t.model_name,gateway:{cost_usd:t.estimated_cost_usd,n_input_tokens:t.usage?.input_tokens??null,n_cache_tokens:t.usage?.cached_input_tokens??null,n_output_tokens:t.usage?.output_tokens??null}}}function ql(t,e,n){return {task_check_id:t.id,check_id:e.id,dataset:e.source.dataset,task_name:t.task_name,user_id:n,provider:e.sandbox_provider,status:t.status,model_name:e.model_name,gateway:{cost_usd:t.cost_usd}}}function Wl(t,e){return {check_id:t.id,user_id:e,source:t.source,provider:t.sandbox_provider,status:t.status,model_name:t.model_name,gateway:{cost_usd:t.cost_usd}}}Ri();var V=class extends Error{status;code;param;details;retryAfterSec;requestId;constructor(e,n,r,s){super(r),this.name="EvolveApiError",this.status=e,this.code=n,s?.param!==void 0&&(this.param=s.param),s?.details!==void 0&&(this.details=s.details),s?.retryAfterSec!==void 0&&(this.retryAfterSec=s.retryAfterSec),s?.requestId!==void 0&&(this.requestId=s.requestId);}isKnownCode(){return yr(this.code)}};async function Yt(t){let e=await t.text().catch(()=>""),n=t.headers?.get?.("x-request-id")??void 0,r=$e(e,t);try{let s=JSON.parse(e);if(s?.error&&typeof s.error=="object"){let o=typeof s.error.code=="string"?s.error.code:"unknown_error",c=typeof s.error.message=="string"?s.error.message:t.statusText;throw new V(t.status,o,c,{param:typeof s.error.param=="string"?s.error.param:void 0,details:s.error.details&&typeof s.error.details=="object"?s.error.details:void 0,retryAfterSec:r,requestId:typeof s.error.requestId=="string"?s.error.requestId:n})}if(typeof s?.error=="string")throw new V(t.status,"unknown_error",s.error,{retryAfterSec:r,requestId:n})}catch(s){if(s instanceof V)throw s}throw new V(t.status,"unknown_error",e||t.statusText,{retryAfterSec:r,requestId:n})}var xr=class extends Error{dataset;constructor(e){super(`Dataset "${e}" has no active version`),this.name="NoActiveVersionError",this.dataset=e;}},zt=class extends Error{name="ImportSettleError";code;importId;dataset;version;state;constructor(e,n,r){super(n),this.code=e,this.importId=r.importId,this.dataset=r.dataset,this.version=r.version,this.state=r.state;}},pm=1e3,Gt=3e4,gm=new Set(["COMPLETED","CANCELLED","FAILED"]),mm=new Set(["job.completed","job.cancelled","job.failed"]),Ht=2e3,fm=30*6e4;function Ee(t,e){let n=e?.apiKey||process.env[B];if(!n)throw new Error(`${t}() requires an API key. Set ${B} or pass { apiKey } in config.`);let r=(e?.baseUrl||process.env.EVOLVE_DASHBOARD_URL||M).replace(/\/$/,"");return {apiKey:n,baseUrl:r,...e?.org?{org:e.org}:{}}}function tc(t){return t?.agent===void 0?"":`?${new URLSearchParams({agent:t.agent})}`}async function x(t,e,n){let r=await fetch(`${t.baseUrl}${e}`,{...n,headers:{Authorization:`Bearer ${t.apiKey}`,...n?.headers}});return r.ok||await Yt(r),r}function wr(t){let e=t.indexOf("@");if(e===-1)return {name:t.trim()};let n=t.slice(0,e).trim(),r=t.slice(e+1).trim();if(!n||!r)throw new Error(`Invalid dataset ref "${t}": expected "name" or "name@version"`);return {name:n,version:r}}function Ai(t){return {name:t.name,version:t.version}}function nc(t){let e=t.kwargs,n=Array.isArray(t.skills)?t.skills.filter(o=>typeof o=="string"):[],r=Array.isArray(t.skill_locks)?t.skill_locks:null,s=r?r.flatMap(o=>{if(!o||typeof o!="object")return [];let c=o;return typeof c.name!="string"||typeof c.digest!="string"?[]:[{name:c.name,source:typeof c.source=="string"?c.source:"",digest:c.digest,git_url:typeof c.git_url=="string"?c.git_url:null,git_commit_id:typeof c.git_commit_id=="string"?c.git_commit_id:null}]}):null;return {name:t.name,model_name:t.model_name,version:t.version??null,reasoning_effort:t.reasoning_effort??null,kwargs:e&&typeof e=="object"&&!Array.isArray(e)?e:null,preset:typeof t.preset=="string"?t.preset:null,skills:n,skill_locks:s}}function hm(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t;if(typeof e.name!="string")return null;let n=Array.isArray(e.authors)?e.authors.flatMap(r=>{if(!r||typeof r!="object"||Array.isArray(r))return [];let s=r;return typeof s.name!="string"?[]:[{name:s.name,email:typeof s.email=="string"?s.email:null}]}):[];return {name:e.name,version:typeof e.version=="string"?e.version:null,description:typeof e.description=="string"?e.description:"",authors:n,keywords:Array.isArray(e.keywords)?e.keywords.filter(r=>typeof r=="string"):[],task_count:typeof e.task_count=="number"?e.task_count:null}}function ym(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t,n=s=>typeof e[s]=="string"?e[s]:null;switch(n("kind")??(n("commit")!==null?"git":null)){case "git":{let s=n("ref"),o=n("commit");return s===null||o===null?null:{kind:"git",git_url:n("git_url"),ref:s,commit:o,path:n("path")}}case "archive":{let s=n("digest");return s===null?null:{kind:"archive",digest:s}}case "archive_url":{let s=n("archive_url"),o=n("digest");return s===null||o===null?null:{kind:"archive_url",archive_url:s,digest:o}}case "hub_package":{let s=n("hub_package"),o=n("digest");return s===null||o===null?null:{kind:"hub_package",hub_package:s,digest:o}}default:return null}}function at(t){return {version:t.version,state:t.state,created_at:t.created_at,task_count:t.task_count??0,n_failed_tasks:typeof t.n_failed_tasks=="number"?t.n_failed_tasks:0,manifest:hm(t.manifest),source:ym(t.source)}}function rc(t){return {code:t.code??"",step:t.step??"",message:t.message??"",excerpt:t.excerpt??null}}function bm(t){return Array.isArray(t)?t.filter(e=>e&&typeof e=="object").map(e=>({task_name:e.task_name??"",failure:rc(e.failure??{})})):[]}function _m(t){return {task_name:t.task_name,agent_timeout_sec:t.agent_timeout_sec,verifier_timeout_sec:t.verifier_timeout_sec,gpus:typeof t.gpus=="number"&&t.gpus>0?t.gpus:0,gpu_types:Array.isArray(t.gpu_types)&&t.gpu_types.length>0?t.gpu_types.map(String):null,providers:t.providers,notes:Array.isArray(t.notes)?t.notes:[]}}function wm(t){return {action:t.action,type:t.type,job_id:t.job_id}}function km(t){let e=t&&typeof t=="object"?t:{};return {max_retries:typeof e.max_retries=="number"?e.max_retries:0,include_exceptions:Array.isArray(e.include_exceptions)?e.include_exceptions:null,exclude_exceptions:Array.isArray(e.exclude_exceptions)?e.exclude_exceptions:[],wait_multiplier:typeof e.wait_multiplier=="number"?e.wait_multiplier:1,min_wait_sec:typeof e.min_wait_sec=="number"?e.min_wait_sec:1,max_wait_sec:typeof e.max_wait_sec=="number"?e.max_wait_sec:60}}function vm(t){return {attempt_number:t.attempt_number,exception_info:t.exception_info??{exception_type:"InfrastructureError",exception_message:""},cost_usd:t.cost_usd??null,started_at:t.started_at??null,settled_at:t.settled_at??null}}function Vt(t){return typeof t=="number"?t:null}function Sm(t){return Array.isArray(t)?t.filter(e=>e&&typeof e=="object").map(e=>{let n=typeof e.n_tasks_ran=="number"?e.n_tasks_ran:0;return {dataset:Ai(e.dataset??{}),n_tasks_ran:n,n_tasks_selected:typeof e.n_tasks_selected=="number"?e.n_tasks_selected:n,n_tasks_failed_to_build:typeof e.n_tasks_failed_to_build=="number"?e.n_tasks_failed_to_build:0,failed_task_names:Array.isArray(e.failed_task_names)?e.failed_task_names.map(String):[],note:e.note??""}}):[]}function xm(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t;if(typeof e.uploaded_at!="string")return null;let n=e.reported_totals,r=o=>typeof o=="number"&&Number.isFinite(o)?o:null,s=n&&typeof n=="object"&&!Array.isArray(n)&&Number.isInteger(n.n_trials_reporting)?{cost_usd:r(n.cost_usd),n_input_tokens:r(n.n_input_tokens),n_cache_tokens:r(n.n_cache_tokens),n_output_tokens:r(n.n_output_tokens),n_trials_reporting:n.n_trials_reporting}:null;return {original_job_id:typeof e.original_job_id=="string"?e.original_job_id:null,original_job_name:typeof e.original_job_name=="string"?e.original_job_name:null,uploaded_at:e.uploaded_at,reported_totals:s,task_links:ic(e.task_links),datasets:Rm(e.datasets)}}var sc=t=>typeof t=="string"&&gr.includes(t),Ei=t=>typeof t=="string"&&mr.includes(t),Ti=t=>Array.isArray(t)&&t.every(e=>typeof e=="string")?[...t]:null;function ic(t){if(!Array.isArray(t))return null;let e=[];for(let n of t){if(!n||typeof n!="object"||Array.isArray(n))return null;let r=n;if(typeof r.task_name!="string"||!sc(r.linked_by)||![r.n_trials,r.n_linked,r.n_unlinked].every(l=>Number.isInteger(l)&&l>=0))return null;let o=Ti(r.datasets),c=Ti(r.candidates);if(o===null||c===null||!r.link_reasons||typeof r.link_reasons!="object"||Array.isArray(r.link_reasons))return null;let u={};for(let[l,i]of Object.entries(r.link_reasons)){if(!Ei(l)||!Number.isInteger(i))return null;u[l]=i;}e.push({task_name:r.task_name,n_trials:r.n_trials,n_linked:r.n_linked,n_unlinked:r.n_unlinked,linked_by:r.linked_by,datasets:o,link_reasons:u,candidates:c});}return e}function Rm(t){if(!Array.isArray(t)||t.length===0)return null;let e=[];for(let n of t){if(typeof n!="object"||n===null)return null;let{name:r,version:s,path:o}=n;if(!(r===void 0&&typeof o=="string")){if(typeof r!="string"||r==="")return null;e.push({name:r,version:typeof s=="string"?s:null});}}return e.length>0?e:null}function Cm(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t;if(!sc(e.linked_by)||e.link_reason!==null&&e.link_reason!==void 0&&!Ei(e.link_reason))return null;let n=e.candidates===void 0?[]:Ti(e.candidates);return n===null?null:{linked_by:e.linked_by,link_reason:Ei(e.link_reason)?e.link_reason:null,dataset:typeof e.dataset=="string"?e.dataset:null,version:typeof e.version=="string"?e.version:null,task_digest:typeof e.task_digest=="string"?e.task_digest:null,candidates:n}}var Em=["creator","member","shared","link"];function Tm(t){return typeof t=="string"&&Em.includes(t)}function ye(t){let e=t.trials??{};return {kind:"job",id:t.id,job_name:t.job_name,status:t.status,datasets:(t.datasets??[]).map(Ai),agents:(t.agents??[]).map(nc),n_attempts:t.n_attempts,n_concurrent_trials:t.n_concurrent_trials,max_trial_spend_usd:t.max_trial_spend_usd,worst_case_spend_usd:t.worst_case_spend_usd,retry:km(t.retry),analyze:t.analyze&&typeof t.analyze=="object"&&!Array.isArray(t.analyze)?t.analyze:null,timeout_multiplier:typeof t.timeout_multiplier=="number"?t.timeout_multiplier:1,agent_timeout_multiplier:Vt(t.agent_timeout_multiplier),verifier_timeout_multiplier:Vt(t.verifier_timeout_multiplier),agent_setup_timeout_multiplier:Vt(t.agent_setup_timeout_multiplier),environment_build_timeout_multiplier:Vt(t.environment_build_timeout_multiplier),sandbox_provider:t.sandbox_provider??null,org:typeof t.org=="string"?t.org:null,visibility:t.visibility==="LINK"?"LINK":"PRIVATE",viewer:Tm(t.viewer)?t.viewer:null,system_log:t.system_log===true,counts:t.counts,build_exclusions:Sm(t.build_exclusions),n_total_trials:t.n_total_trials??0,trials:{total:e.total??0,byStatus:e.byStatus??{}},stats:t.stats??{},failure:t.failure??null,source_jobs:(t.source_jobs??[]).map(wm),is_regrade:t.is_regrade===true,upload:xm(t.upload),idempotent_replay:t.idempotent_replay===true,started_at:t.started_at,updated_at:t.updated_at,finished_at:t.finished_at??null}}function X(t,e){let n=t??{};return {items:Array.isArray(n.items)?n.items.map(e):[],nextCursor:n.nextCursor??null,hasMore:n.hasMore===true}}function ce(t,e){let n=new URLSearchParams;t?.limit!==void 0&&n.set("limit",String(t.limit)),t?.cursor&&n.set("cursor",t.cursor);for(let[s,o]of Object.entries(e??{}))o!==void 0&&n.set(s,o);let r=n.toString();return r?`?${r}`:""}function Pe(t){if(!t||typeof t!="object")return null;let e=t;return {started_at:e.started_at??null,finished_at:e.finished_at??null}}function Pm(t){let e=t.model_info??{};return {name:t.name,version:t.version??null,model_info:{name:e.name,provider:e.provider??null},reasoning_effort:t.reasoning_effort??null}}function Rr(t){return !t||typeof t!="object"||Array.isArray(t)?null:{...t,usage:it(t.usage)}}function Am(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let{from:e,to:n,reason:r}=t;return typeof e!="string"||typeof n!="string"||typeof r!="string"?null:{from:e,to:n,reason:r}}function Pi(t){return {id:t.id,job_id:t.job_id,task_name:t.task_name,source:t.source,agent_info:Pm(t.agent_info||{}),attempt:t.attempt,status:t.status,reward:t.reward??null,verifier_result:t.verifier_result??null,exception_info:t.exception_info??null,agent_result:t.agent_result??null,judge_result:t.judge_result??null,analysis:Rr(t.analysis),environment_setup:Pe(t.environment_setup),agent_setup:Pe(t.agent_setup),agent_execution:Pe(t.agent_execution),verifier:Pe(t.verifier),queue_wait:Pe(t.queue_wait),harness_bundle:Pe(t.harness_bundle),image_prepare:Pe(t.image_prepare),shared_verify_setup:Pe(t.shared_verify_setup),harness_bundle_cache_hit:typeof t.harness_bundle_cache_hit=="boolean"?t.harness_bundle_cache_hit:null,step_results:t.step_results??null,spend_source:t.spend_source??null,judge_spend_source:t.judge_spend_source??null,live_spent_usd:t.live_spent_usd??null,live_spend_at:t.live_spend_at??null,usage:it(t.usage),max_trial_spend_usd:t.max_trial_spend_usd??null,sandbox_provider:t.sandbox_provider??null,sandbox_provider_degrade:Am(t.sandbox_provider_degrade),gpu_cost:t.gpu_cost&&typeof t.gpu_cost=="object"&&!Array.isArray(t.gpu_cost)?t.gpu_cost:null,sandbox_id:t.sandbox_id??null,verifier_sandbox_id:t.verifier_sandbox_id??null,verifier_environment_mode:t.verifier_environment_mode??null,attempt_phase:t.attempt_phase??null,n_retries:t.n_retries??0,retries:Array.isArray(t.retries)?t.retries.map(vm):[],session_ref:t.session_ref??null,upload:Im(t.upload),started_at:t.started_at??null,finished_at:t.finished_at??null}}function Im(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t;if(typeof e.original_trial_name!="string"||typeof e.original_task_name!="string")return null;let n=e.reported_agent_result,r=s=>typeof s=="number"&&Number.isFinite(s)?s:null;return {original_trial_id:typeof e.original_trial_id=="string"?e.original_trial_id:null,original_trial_name:e.original_trial_name,original_task_name:e.original_task_name,reported_agent_result:n&&typeof n=="object"&&!Array.isArray(n)?{n_input_tokens:r(n.n_input_tokens),n_cache_tokens:r(n.n_cache_tokens),n_output_tokens:r(n.n_output_tokens),cost_usd:r(n.cost_usd)}:null,link:Cm(e.link)}}function kr(t){return {name:t.name,org:typeof t.org=="string"?t.org:null,source:t.source,run_command:t.run_command,env:t.env??{},created_at:t.created_at,updated_at:t.updated_at}}function lt(t){let e={id:t.id,status:t.status,name:t.name,version:t.version,failure:t.failure??null,warnings:t.warnings??[],progress:t.progress??null};return typeof t.receiving=="boolean"&&(e.receiving=t.receiving),typeof t.task_count=="number"&&(e.task_count=t.task_count),typeof t.created_at=="string"&&(e.created_at=t.created_at),typeof t.updated_at=="string"&&(e.updated_at=t.updated_at),e}function Kt(t){let e={id:t.id,status:t.status,receiving:t.receiving===true,source:t.source??null,dataset:t.dataset??null,job_id:t.job_id??null,n_trials_uploaded:t.n_trials_uploaded??null,n_trials_skipped:t.n_trials_skipped??null,skipped_trials:Array.isArray(t.skipped_trials)?t.skipped_trials:null,task_links:ic(t.task_links),failure:t.failure??null,progress:t.progress??null};return typeof t.created_at=="string"&&(e.created_at=t.created_at),typeof t.updated_at=="string"&&(e.updated_at=t.updated_at),e}function oc(t){let e=t??{};return {scored:e.scored??0,total:e.total??0}}function Om(t){return {id:t.id,datasets:(t.datasets??[]).map(Ai),status:t.status,mean_reward:t.mean_reward??null,coverage:oc(t.coverage),cost_usd:t.cost_usd??0,agents:(t.agents||[]).map(nc),started_at:t.started_at}}function Mm(t){return {job_id:t.job_id,status:t.status,mean_reward:t.mean_reward??null,coverage:oc(t.coverage)}}function Dm(t){return {task_name:t.task_name,disagreement:t.disagreement===true,cells:(t.cells||[]).map(Mm)}}function ac(t){return {seq:t.seq,type:t.type,data:t.data??{}}}function lc(t){return (Array.isArray(t)?t:[]).map((n,r)=>({seq:fr+r,type:"usage",data:n&&typeof n=="object"&&!Array.isArray(n)?n:{}}))}function Um(t){return {trial_id:t.trial_id,task_name:t.task_name??null,match_count:t.match_count,events:(t.events||[]).map(ac)}}function Ii(t){return t?t.suffix!==void 0?`bytes=-${t.suffix}`:t.start===void 0?null:`bytes=${t.start}-${t.end??""}`:null}function Ae(t){if(t?.aborted)throw t.reason instanceof Error?t.reason:new Error("Watch aborted")}function Xl(t,e){return e?.aborted?true:t?.name==="AbortError"}function se(t,e){return new Promise((n,r)=>{let s=setTimeout(()=>{e?.removeEventListener("abort",o),n();},t),o=()=>{clearTimeout(s),r(e?.reason instanceof Error?e.reason:new Error("Watch aborted"));};e?.addEventListener("abort",o,{once:true});})}function cc(t){let e="",n=false;return {push(r){n&&(r="\r"+r,n=false),r.endsWith("\r")&&(r=r.slice(0,-1),n=true),e+=r.replace(/\r\n|\r/g,`
228
233
  `);let s;for(;(s=e.indexOf(`
229
234
 
230
- `))!==-1;){let a=e.slice(0,s);e=e.slice(s+2);let d,u,c=[];for(let i of a.split(`
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 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
235
+ `))!==-1;){let o=e.slice(0,s);e=e.slice(s+2);let c,u,l=[];for(let i of o.split(`
236
+ `)){if(!i||i.startsWith(":"))continue;let a=i.indexOf(":"),d=a===-1?i:i.slice(0,a),p=a===-1?"":i.slice(a+1);p.startsWith(" ")&&(p=p.slice(1)),d==="id"?c=p:d==="event"?u=p:d==="data"&&l.push(p);}(c!==void 0||u!==void 0||l.length>0)&&t({id:c,event:u,data:l.join(`
237
+ `)});}}}}async function*Ql(t,e,n){let r=await x(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=[],o=cc(l=>{s.push({event:l.event||"message",...l.id!==void 0?{id:l.id}:{},data:l.data?xc(l.data):{}});}),c=r.body.getReader(),u=new TextDecoder;try{for(;;){let{done:l,value:i}=await c.read();if(l)break;for(o.push(u.decode(i,{stream:!0}));s.length>0;)yield s.shift();}}finally{c.cancel().catch(()=>{});}}function Le(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 dc(t){return t.split("/").filter(Boolean).map(encodeURIComponent).join("/")}function Oi(t,e){return {async status(){return await(await x(t,`${e}/filesystem`)).json()},async list(n){return await(await x(t,`${e}/filesystem/files${Le({path:n?.path,source:n?.source,cursor:n?.cursor,limit:n?.limit})}`)).json()},async read(n,r){let s=Ii(r?.range),o=await x(t,`${e}/filesystem/files/${dc(n)}${Le({source:r?.source})}`,s?{headers:{Range:s}}:void 0);return Buffer.from(await o.arrayBuffer())},async search(n){return await(await x(t,`${e}/filesystem/search${Le({q:n.q,path:n.path,regex:n.regex,limit:n.limit,source:n.source})}`)).json()},async changes(n){return await(await x(t,`${e}/filesystem/changes${Le({source:n?.source,phase:n?.phase,cursor:n?.cursor,limit:n?.limit})}`)).json()},archive:(async n=>Cr(t,`${e}/filesystem/archive${Le({path:n?.path,source:n?.source})}`,n,"filesystem.tar.gz")),async watch(n){return await(await x(t,`${e}/filesystem/watch`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({paths:n})})).json()},events(n){return Ql(t,`${e}/filesystem/events`,n)},async logs(n){return await(await x(t,`${e}/logs${Le({stream:n.stream,cursor:n.cursor,limit:n.limit})}`)).json()},logEvents(n){return Ql(t,`${e}/logs/events`,n)},async procs(){return await(await x(t,`${e}/procs`)).json()}}}function $m(t,e){return {async status(){return await(await x(t,`${e}/filesystem`)).json()},async list(n){return await(await x(t,`${e}/filesystem/files${Le({path:n?.path,cursor:n?.cursor,limit:n?.limit})}`)).json()},async read(n,r){let s=Ii(r?.range),o=await x(t,`${e}/filesystem/files/${dc(n)}`,s?{headers:{Range:s}}:void 0);return Buffer.from(await o.arrayBuffer())}}}function be(t,e){let n,r=()=>n??=t({limit:e?.limit,cursor:e?.cursor});return {then(s,o){return r().then(s,o)},catch(s){return r().catch(s)},finally(s){return r().finally(s)},async*[Symbol.asyncIterator](){let s=e?.cursor;for(;;){let o=await t({limit:e?.limit,cursor:s});for(let c of o.items)yield c;if(!o.nextCursor)return;s=o.nextCursor;}}}}function Fe(t){let e=new FormData;for(let[n,r]of Object.entries(t))r!==void 0&&e.set(n,r);return e}async function Lm(t){let{readFileSync:e,readdirSync:n,statSync:r}=await import('fs'),{basename:s,join:o,resolve:c}=await import('path'),u=c(t),l=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 a=[],d=u;if(l(o(u,"task.toml"))){let g=n(u,{withFileTypes:true}).filter(m=>m.isDirectory()&&!m.name.startsWith(".")).filter(m=>l(o(u,m.name,"task.toml"))).map(m=>m.name);if(i(o(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`);a.push({name:s(u),dir:u});}else {d=i(o(u,"tasks"))?o(u,"tasks"):u;for(let g of n(d,{withFileTypes:true})){if(!g.isDirectory()||g.name.startsWith("."))continue;let m=o(d,g.name);if(!l(o(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)`);a.push({name:g.name,dir:m});}if(a.length===0)throw new Error(`${d} holds no task directories \u2014 nothing to check`);a.sort((g,m)=>g.name<m.name?-1:g.name>m.name?1:0);}let p=(d===u?[u]:[d,u]).map(g=>o(g,"dataset.toml")).find(l);return {tasks:a.map(({name:g,dir:m})=>({name:g,task_toml:e(o(m,"task.toml"),"utf8")})),...p!==void 0?{dataset_toml:e(p,"utf8")}:{}}}async function Fm(t,e,n){let{postMultipartFile:r}=await Promise.resolve().then(()=>(Ri(),Zl)),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 Yt(s),s}async function uc(t,e,n,r){if(r.resumableThreshold!==void 0){let{stat:s}=await import('fs/promises'),{size:o}=await s(n);if(o>r.resumableThreshold){let{uploadArchiveResumable:c}=await Promise.resolve().then(()=>(fi(),Ol)),u=await c({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 Yt(u),u}}return await Fm(t,e,{method:r.method,fields:r.fields,file:{path:n,filename:r.filename},...r.onBytes!==void 0?{onBytes:r.onBytes}:{}})}async function ct(t,e,n){let{tarGzipDirectoryToFile:r}=await Promise.resolve().then(()=>(Cs(),Rs)),{mkdtemp:s,rm:o}=await import('fs/promises'),{tmpdir:c}=await import('os'),{join:u}=await import('path'),l=await s(u(c(),"evolve-upload-"));try{let i=u(l,n.filename);return await r(n.directory,i),await uc(t,e,i,n)}finally{await o(l,{recursive:true,force:true});}}function Nm(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 pc="x-package-sha256",qt=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"},Wt=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 gc(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 Wt(r,e)}async function mc(t,e){let n=t.headers.get(pc);if(!n)return;let{createHash:r}=await import('crypto'),s=r("sha256").update(e).digest("hex");if(s!==n)throw new qt(n,s)}function Bm(t,e){let r=(t.headers.get("Content-Disposition")||"").match(/filename="([^"]+)"/);if(!r)return e;let s=fe.basename(r[1]);return s===""||s==="."||s===".."||/[/\\]/.test(s)||/[\u0000-\u001f]/.test(s)?e:s}async function fc(t,e,n){if(!t.body)throw new Error("Download response has no body");await promises.mkdir(e,{recursive:true});let r=fe.join(e,Bm(t,n)),{createHash:s,randomBytes:o}=await import('crypto'),c=`${r}.${o(8).toString("hex")}.part`,u=s("sha256"),l=0,i=stream.Readable.fromWeb(t.body);i.on("data",a=>{u.update(a),l+=a.length;});try{await promises$1.pipeline(i,he.createWriteStream(c));let a=t.headers.get("Content-Length");if(a!==null&&l!==Number(a))throw new Wt(Number(a),l);let d=t.headers.get(pc),p=u.digest("hex");if(d&&p!==d)throw new qt(d,p);await promises.rename(c,r);}catch(a){throw await promises.rm(c,{force:true}).catch(()=>{}),a}return r}async function Cr(t,e,n,r){let s=await x(t,e);if(n?.stream){if(!s.body)throw new Error("Download response has no body");return s.body}if(n?.to)return fc(s,n.to,r);let o=Buffer.from(await s.arrayBuffer());return gc(s,o.length),await mc(s,o),o}function hc(t){let e=Ee("datasets",t);async function n(i){let a=await x(e,`/api/datasets/imports/${encodeURIComponent(i)}`);return lt(await a.json())}function r(i){if(!i||typeof i!="object")return null;let a=i;return {git_url:a.git_url??null,ref:a.ref,current_commit:a.current_commit,path:a.path??null,latest_commit:a.latest_commit??null,acked_commit:a.acked_commit??null,moved:a.moved===true,behind_by:typeof a.behind_by=="number"?a.behind_by:null,checked_at:a.checked_at??null,error:a.error??null,auto_import:a.auto_import===true}}function s(i){return {name:i.name,title:i.title??null,description:i.description??null,active_version:i.active_version?at(i.active_version):null,latest_version:i.latest_version?at(i.latest_version):null,versions:(i.versions||[]).map(at),selected_version:i.selected_version?at(i.selected_version):null,tasks:X(i.tasks,_m),failed_tasks:bm(i.failed_tasks),upstream:r(i.upstream),created_at:i.created_at,updated_at:i.updated_at}}async function o(i,a){let d=wr(i),p=ce(a,{version:d.version}),g=await x(e,`/api/datasets/${encodeURIComponent(d.name)}${p}`);return s(await g.json())}async function c(i,a){let d=a?.pollIntervalMs??Ht,p=a?.settleTimeoutMs??fm,g=Date.now()+p,m=`${i.name}@${i.version}`,f=null,h=null,b=()=>h?.state==="FAILED"?new zt("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:h.state}):new zt("settle_timeout",`Import ${i.id} completed, but dataset "${i.name}" version "${i.version}" did not settle within ${p}ms: last observed state ${h?.state??"never observed"}. Keep following with datasets().get("${m}").`,{importId:i.id,dataset:i.name,version:i.version,state:h?.state??null}),_=async w=>{for(;;){Ae(a?.signal);try{return await w()}catch(y){if(!(y instanceof V)||y.status!==429&&y.status!==503)throw y;let k=g-Date.now();if(k<=0)throw b();await se(Math.min(Math.max((y.retryAfterSec??0)*1e3,d),k),a?.signal);}}};for(;;){Ae(a?.signal);let w=await _(()=>o(m,{limit:1})),y=w.selected_version;if(y){if(h=y,y.state!==f&&(f=y.state,a?.onVersion?.(y,w)),y.state==="FAILED")return _(()=>n(i.id));if(y.state==="READY"||y.state==="ARCHIVED")return i}if(Date.now()>=g)throw b();await se(d,a?.signal);}}function u(i){return {name:i.name,title:i.title??null,description:i.description??null,active_version:i.active_version?at(i.active_version):null,latest_version:i.latest_version?at(i.latest_version):null,upstream:r(i.upstream)}}async function l(i){let a=await x(e,`/api/datasets${ce(i,{search:i?.search})}`);return X(await a.json(),u)}return {list(i){return be(a=>l({...a,search:i?.search}),i)},get:o,async getActive(i,a){let d=await o(i,a);if(d.active_version===null)throw new xr(i);return {name:d.name,title:d.title,description:d.description,active_version:d.active_version,version:d.active_version.version,tasks:d.tasks??{items:[],nextCursor:null,hasMore:false},versions:d.versions??[],created_at:d.created_at,updated_at:d.updated_at}},async getTaskBuild(i,a){let d=wr(i);if(d.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 x(e,`/api/datasets/${encodeURIComponent(d.name)}/versions/${encodeURIComponent(d.version)}/tasks/${encodeURIComponent(a)}/build`)).json();return {task_name:g.task_name??a,state:g.state,failure:g.failure&&typeof g.failure=="object"?rc(g.failure):null,build_log_ref:g.build_log_ref??null}},async preflight(i){let a=i?.source?.directory;if(typeof a!="string"||a==="")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 d=await Lm(a);return await(await x(e,"/api/datasets/preflight",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(d)})).json()},async publish(i,a){let d=i.source,p=i.org??e.org;if(d?.directory){if(i.name===void 0||i.version===void 0){let{existsSync:m}=await import('fs'),{join:f}=await import('path');if(!(m(f(d.directory,"dataset.toml"))||m(f(d.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 ct(e,"/api/datasets/publish",{fields:{name:i.name,version:i.version,org:p},directory:d.directory,filename:"corpus.tar.gz",...a?.onUploadProgress!==void 0?{onBytes:a.onUploadProgress}:{},...a?.onRegistered!==void 0?{onRegistered:a.onRegistered}:{},resumableThreshold:jt});return lt(await g.json())}if(d&&"archive_url"in d&&d.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 x(e,"/api/datasets/publish",{method:"POST",body:Fe({name:i.name,version:i.version,archive_url:d.archive_url,org:p})});return lt(await g.json())}if(d&&"hub_package"in d&&d.hub_package){let g=await x(e,"/api/datasets/publish",{method:"POST",body:Fe({...i.name!==void 0?{name:i.name}:{},...i.version!==void 0?{version:i.version}:{},hub_package:d.hub_package,org:p})});return lt(await g.json())}if(d&&"git_url"in d&&d.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 x(e,"/api/datasets/publish",{method:"POST",body:Fe({name:i.name,version:i.version,git_url:d.git_url,git_ref:d.git_ref,...d.git_path!==void 0?{git_path:d.git_path}:{},org:p})});return lt(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,a){let d=a?.pollIntervalMs??Ht,p=null,g=null;for(;;){Ae(a?.signal);let m;try{m=await n(i);}catch(h){if(h instanceof V&&(h.status===429||h.status===503)){await se(Math.max((h.retryAfterSec??0)*1e3,d),a?.signal);continue}throw h}let f=`${m.status}${m.receiving===true?":receiving":""}`;if(f!==p&&(p=f,a?.onStatus?.(m)),m.progress!==null){let h=JSON.stringify(m.progress);h!==g&&(g=h,a?.onProgress?.(m.progress,m));}if(m.status==="FAILED")return m;if(m.status==="COMPLETED")return c(m,a);await se(d,a?.signal);}},download:(async(i,a)=>{let d=wr(i),p=d.version?`?version=${encodeURIComponent(d.version)}`:"",g=await x(e,`/api/datasets/${encodeURIComponent(d.name)}/download${p}`);if(a?.stream){if(!g.body)throw new Error("Package response has no body");return g.body}if(a?.to)return fc(g,a.to,`${d.name}-corpus.tar.gz`);let m=Buffer.from(await g.arrayBuffer());return gc(g,m.length),await mc(g,m),m}),listImports(i){return be(async a=>{let d=new URLSearchParams;a.limit!==void 0&&d.set("limit",String(a.limit)),a.cursor!==void 0&&d.set("cursor",a.cursor),i?.status!==void 0&&d.set("status",i.status),i?.dataset!==void 0&&d.set("dataset",i.dataset);let p=d.toString()?`?${d}`:"",g=await x(e,`/api/datasets/imports${p}`);return X(await g.json(),lt)},i)},async activate(i,a){let d=await x(e,`/api/datasets/${encodeURIComponent(i)}/versions/${encodeURIComponent(a)}/activate`,{method:"POST"});return s(await d.json())},async update(i,a){let d=await x(e,`/api/datasets/${encodeURIComponent(i)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});return u(await d.json())},async delete(i){await x(e,`/api/datasets/${encodeURIComponent(i)}`,{method:"DELETE"});},taskFiles(i,a){let d=wr(i);if(d.version===void 0)throw new Error(`datasets().taskFiles() needs "name@version" \u2014 a task's files belong to one immutable version (got "${i}")`);return $m(e,`/api/datasets/${encodeURIComponent(d.name)}/versions/${encodeURIComponent(d.version)}/tasks/${encodeURIComponent(a)}`)}}}function yc(t){let e=Ee("agents",t);return {async create(n){let r=ec("agents().create()",{...n,org:n.org??e.org}),s=r.directory?await ct(e,"/api/agents",{fields:r.fields,directory:r.directory,filename:"source.tar.gz"}):await x(e,"/api/agents",{method:"POST",body:Fe(r.fields)});return kr(await s.json())},list(n){return be(async r=>{let s=await x(e,`/api/agents${ce(r,{scope:n?.scope})}`);return X(await s.json(),kr)},n)},async get(n){let r=await x(e,`/api/agents/${encodeURIComponent(n)}`);return kr(await r.json())},async delete(n){await x(e,`/api/agents/${encodeURIComponent(n)}`,{method:"DELETE"});},async upsert(n,r){let s=ec("agents().upsert()",{...r,name:n,org:r.org??e.org}),o=s.directory?await ct(e,`/api/agents/${encodeURIComponent(n)}`,{method:"PUT",fields:s.fields,directory:s.directory,filename:"source.tar.gz"}):await x(e,`/api/agents/${encodeURIComponent(n)}`,{method:"PUT",body:Fe(s.fields)});return kr(await o.json())}}}function ec(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 Ci(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 bc(t){let e=Ee("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:o}=await import('path'),c=s(o(n)),l=await(await ct(e,"/api/skills",{fields:{name:c||void 0,org:r?.org??e.org},directory:n,filename:"skill.tar.gz"})).json();return (Array.isArray(l.skills)?l.skills:[l]).map(Ci)},list(n){return be(async r=>{let s=await x(e,`/api/skills${ce(r,{scope:n?.scope})}`);return X(await s.json(),Ci)},n)},async get(n){let s=await(await x(e,`/api/skills/${encodeURIComponent(n)}`)).json();return {...Ci(s),skill_md:s.skill_md??null}},async delete(n){await x(e,`/api/skills/${encodeURIComponent(n)}`,{method:"DELETE"});}}}function _c(t){let e=Ee("jobs",t);async function n(i){let a=await x(e,`/api/jobs/${encodeURIComponent(i)}`);return ye(await a.json())}async function r(i){let a=await x(e,`/api/jobs/imports/${encodeURIComponent(i)}`);return Kt(await a.json())}function s(i){return i.kind!=="check"?ye(i):{...i,kind:"check",visibility:i.visibility==="LINK"?"LINK":"PRIVATE",cost_usd:Vt(i.cost_usd),finished_at:i.finished_at??null}}async function o(i){let a=await x(e,`/api/jobs${ce(i,{search:i?.search,scope:i?.scope,kind:i?.kind})}`);return X(await a.json(),s)}function c(i){let a=i.trials??{};return {task_name:i.task_name,source:i.source,trials:{total:a.total??0,byStatus:a.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,a){let d=ce(a,{status:a?.status?.length?a.status.join(","):void 0,dataset:a?.dataset}),p=await x(e,`/api/jobs/${encodeURIComponent(i)}/trials${d}`);return X(await p.json(),Pi)}async function*l(i,a){let{onEvent:d,signal:p}=a??{},g=a?.reconnectDelayMs??pm,m=a?.maxReconnectDelayMs??Gt,f=null,h=false,b=false,_=g;for(;!h;){Ae(p);let w;try{w=await fetch(`${e.baseUrl}/api/jobs/${encodeURIComponent(i)}/events`,{headers:{Authorization:`Bearer ${e.apiKey}`,Accept:"text/event-stream",...f!==null?{"Last-Event-ID":String(f)}:{}},signal:p});}catch(C){if(Xl(C,p))throw C;await se(_,p),_=Math.min(_*2,m);continue}if(!w.ok){if(w.status===429||w.status>=500){let C=await w.text().catch(()=>""),P=$e(C,w)??0,N=P>0?Math.max(P*1e3,_):_;await se(N,p),_=Math.min(_*2,m);continue}await Yt(w);}if(!w.body)throw new Error("Event stream response has no body");let y=false,k=[],R=cc(C=>{let P=Number(C.id),N={seq:Number.isInteger(P)?P:-1,type:C.event||"message",data:C.data?xc(C.data):{}};Number.isInteger(P)&&(f=P),y=true,mm.has(N.type)&&(h=true),k.push(N);}),S=w.body.getReader(),v=new TextDecoder;try{for(;!h;){let{done:C,value:P}=await S.read();if(C)break;R.push(v.decode(P,{stream:!0}));for(let N of k)d?.(N),yield N;k.length=0;}}catch(C){if(Xl(C,p))throw C}finally{await S.cancel().catch(()=>{});}if(h)break;Ae(p);let E=await n(i);if(gm.has(E.status)){if(b)return E;b=true;continue}y&&(_=g),await se(_,p),_=Math.min(_*2,m);}return n(i)}return {async start(i,a){let d=i.org??e.org,p=d!==void 0?{...i,org:d}:i,g=await x(e,"/api/jobs",{method:"POST",headers:{"Content-Type":"application/json",...a?.idempotencyKey?{"Idempotency-Key":a.idempotencyKey}:{}},body:JSON.stringify(p)});return ye(await g.json())},get:n,list(i){return be(a=>o({...a,search:i?.search,scope:i?.scope,kind:i?.kind}),i)},trials(i,a){return be(d=>u(i,{...d,status:a?.status,dataset:a?.dataset}),a)},tasks(i,a){return be(async d=>{let p=await x(e,`/api/jobs/${encodeURIComponent(i)}/tasks${ce(d)}`);return X(await p.json(),c)},a)},watch(i,a){return Nm(l(i,a))},async cancel(i){let a=await x(e,`/api/jobs/${encodeURIComponent(i)}/cancel`,{method:"POST"});return ye(await a.json())},async compare(i){let a=i.map(encodeURIComponent).join(","),p=await(await x(e,`/api/jobs/compare?ids=${a}`)).json();return {jobs:(p.jobs||[]).map(Om),taskMatrix:(p.taskMatrix||[]).map(Dm)}},async resume(i,a,d){let p=await x(e,`/api/jobs/${encodeURIComponent(i)}/resume`,{method:"POST",headers:{"Content-Type":"application/json",...d?.idempotencyKey?{"Idempotency-Key":d.idempotencyKey}:{}},body:JSON.stringify(a??{})});return ye(await p.json())},async retry(i,a,d){let p=await x(e,`/api/jobs/${encodeURIComponent(i)}/retry`,{method:"POST",headers:{"Content-Type":"application/json",...d?.idempotencyKey?{"Idempotency-Key":d.idempotencyKey}:{}},body:JSON.stringify(a??{})});return ye(await p.json())},async regrade(i,a){let d={};a?.statuses?.length&&(d.statuses=a.statuses),a?.task_name!==void 0&&(d.task_name=a.task_name);let p=await x(e,`/api/jobs/${encodeURIComponent(i)}/regrade`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(d)});return ye(await p.json())},async analyze(i,a){let d=await x(e,`/api/jobs/${encodeURIComponent(i)}/analyze`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a??{})});return ye(await d.json())},async watchAnalysis(i,a){let d=a?.pollIntervalMs??Ht,p=d,g=null;for(;;){Ae(a?.signal);let m;try{m=await n(i);}catch(_){if(_ instanceof V&&(_.status===429||_.status===503)){await se(Math.max((_.retryAfterSec??0)*1e3,p),a?.signal),p=Math.min(p*2,Gt);continue}throw _}let f=m.stats.analysis??null,h=f?JSON.stringify([f.n_completed,f.n_failed,f.n_pending]):null,b=h!==null&&h!==g;if(b&&(g=h,a?.onStats?.(m)),f?.n_pending===0)return m;p=b?d:Math.min(p*2,Gt),await se(p,a?.signal);}},download:(async(i,a)=>Cr(e,`/api/jobs/${encodeURIComponent(i)}/download`,a,`job-${i}-results.tar.gz`)),async upload(i,a){let d={dataset:a?.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 y=await x(e,"/api/jobs/upload",{method:"POST",body:Fe({...d,archive_url:i.archive_url})});return Kt(await y.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:d,filename:"job.tar.gz",resumableThreshold:jt,resumablePath:"/api/jobs/upload/uploads",...a?.onUploadProgress!==void 0?{onBytes:a.onUploadProgress}:{},...a?.onRegistered!==void 0?{onRegistered:a.onRegistered}:{}},{stat:g}=await import('fs/promises');if((await g(i).catch(()=>null))?.isFile()){let y=await uc(e,"/api/jobs/upload",i,p);return Kt(await y.json())}let{existsSync:f}=await import('fs'),{join:h,resolve:b}=await import('path'),_=b(i);for(let y of ["result.json","config.json"])if(!f(h(_,y)))throw new Error(`${_} does not contain ${y}`);let w=await ct(e,"/api/jobs/upload",{...p,directory:_});return Kt(await w.json())},getImport:r,async watchImport(i,a){let d=a?.pollIntervalMs??Ht,p=null,g=null;for(;;){Ae(a?.signal);let m;try{m=await r(i);}catch(h){if(h instanceof V&&(h.status===429||h.status===503)){await se(Math.max((h.retryAfterSec??0)*1e3,d),a?.signal);continue}throw h}let f=`${m.status}${m.receiving?":receiving":""}`;if(f!==p&&(p=f,a?.onStatus?.(m)),m.progress!==null){let h=JSON.stringify(m.progress);h!==g&&(g=h,a?.onProgress?.(m.progress,m));}if(m.status==="COMPLETED"||m.status==="FAILED")return m;await se(d,a?.signal);}},listImports(i){return be(async a=>{let d=new URLSearchParams;a.limit!==void 0&&d.set("limit",String(a.limit)),a.cursor!==void 0&&d.set("cursor",a.cursor),i?.status!==void 0&&d.set("status",i.status);let p=d.toString()?`?${d}`:"",g=await x(e,`/api/jobs/imports${p}`);return X(await g.json(),Kt)},i)},async delete(i){let d=await(await x(e,`/api/jobs/${encodeURIComponent(i)}`,{method:"DELETE"})).json();return {job_id:d.job_id??i,trials_deleted:d.trials_deleted??0,analyses_deleted:d.analyses_deleted??0}},async share(i,a){let d=await x(e,`/api/jobs/${encodeURIComponent(i)}/share`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});return le(await d.json())},async unshare(i,a){let d=await x(e,`/api/jobs/${encodeURIComponent(i)}/unshare`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});return le(await d.json())},async shares(i){let a=await x(e,`/api/jobs/${encodeURIComponent(i)}/shares`);return le(await a.json())},async grep(i,a,d){let p=await x(e,`/api/jobs/${encodeURIComponent(i)}/grep${ce(d,{q:a,type:d?.type})}`);return X(await p.json(),Um)}}}function wc(t){let e=Ee("trials",t);async function n(s,o){let c=await x(e,`/api/trials/${encodeURIComponent(s)}/trace${ce(o,{type:o?.type,grep:o?.grep,tail:o?.tail!==void 0?String(o.tail):void 0})}`);return X(await c.json(),ac)}async function r(s,o){let u=await(await x(e,`/api/trials/${encodeURIComponent(s)}/trace?stream=${o}`)).json();return o==="agent-home"?u.files??null:u.log??null}return {async get(s){let o=await x(e,`/api/trials/${encodeURIComponent(s)}`);return Pi(await o.json())},trace:n,artifact:r,async*traceEvents(s,o){let c=o?.cursor;for(;;){let u=await n(s,{...o,cursor:c});for(let l of u.items)yield l;if(!u.nextCursor)return;c=u.nextCursor;}},async regrade(s){let o=await x(e,`/api/trials/${encodeURIComponent(s)}/regrade`,{method:"POST"});return ye(await o.json())},async retry(s,o){let c=await x(e,`/api/trials/${encodeURIComponent(s)}/retry`,{method:"POST",...o?.idempotencyKey?{headers:{"Idempotency-Key":o.idempotencyKey}}:{}});return ye(await c.json())},async stop(s){let c=await(await x(e,"/api/trials/stop",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({trial_ids:s})})).json();return {stopped:(c.stopped??[]).map(Pi),stopped_analyses:(c.stopped_analyses??[]).map(Rr).filter(u=>u!==null),already_terminal:c.already_terminal??[],not_found:c.not_found??[]}},async files(s,o){let c=await x(e,`/api/trials/${encodeURIComponent(s)}/files${ce(o)}`);return X(await c.json(),u=>({path:u.path,size_bytes:u.size_bytes}))},async file(s,o,c){let u=o.split("/").filter(Boolean).map(encodeURIComponent).join("/"),l=Ii(c),i=await x(e,`/api/trials/${encodeURIComponent(s)}/files/${u}`,l?{headers:{Range:l}}:void 0);return Buffer.from(await i.arrayBuffer())},filesystem:s=>Oi(e,`/api/trials/${encodeURIComponent(s)}`)}}function kc(t){let e=t?.update;return typeof e?.sessionUpdate=="string"?e.sessionUpdate:"unknown"}function vc(t){let e=Ee("analyses",t),n=new Set;async function r(c){if(n.has(c))return;let u;try{u=await x(e,`/api/traces/trials/${encodeURIComponent(c)}/artifacts?what=analysis`);}catch(l){throw l instanceof V&&l.status===400?new Error(`"${c}" is not an analysis run (the artifacts door refuses it typed) \u2014 for a trial's artifacts use trials()`):l}await u.text().catch(()=>{}),n.add(c);}async function s(c,u){await r(c);let i=await(await x(e,`/api/traces/trials/${encodeURIComponent(c)}/artifacts?what=${u}`)).json();return u==="agent-home"?i.files??null:i.log??null}async function o(c){let u=await x(e,`/api/analyses${ce(c,{scope:c?.scope,job:c?.job,status:c?.status&&c.status.length>0?c.status.join(","):void 0})}`);return X(await u.json(),l=>{let i=Rr(l);if(i===null)throw new Error("The analyses list served an unreadable analysis object");return i})}return {list(c){return be(u=>o({...u,scope:c?.scope,job:c?.job,status:c?.status}),c)},async get(c){let l=await(await x(e,`/api/traces/trials/${encodeURIComponent(c)}/artifacts?what=analysis`)).json(),i=Rr(l.analysis);if(i===null)throw new Error(`The analysis feed served no readable analysis object for "${c}"`);return n.add(c),i},async transcript(c,u){let l=u?.since;if(l!==void 0&&(!Number.isInteger(l)||l<0))throw new Error(`transcript() since must be a non-negative integer, got ${l}`);let a=await(await x(e,`/api/traces/trials/${encodeURIComponent(c)}/events`+(l!==void 0?`?since=${l}`:""))).json(),d=a.session??{};if(d.kind!=="analysis"){let m=typeof d.kind=="string"?d.kind:"trial";throw new Error(`"${c}" is not an analysis run (the feed resolves it as a ${m}) \u2014 for a trial's trace use trials()`)}let p=l??0,g=Array.isArray(a.events)?a.events:[];return {id:typeof d.id=="string"?d.id:c,analyzed_trial_id:typeof d.analyzedTrialId=="string"?d.analyzedTrialId:null,job_id:typeof d.jobId=="string"?d.jobId:null,task_name:typeof d.tag=="string"?d.tag:null,model_name:typeof d.model=="string"?d.model:null,sandbox_provider:typeof d.provider=="string"?d.provider:null,sandbox_id:typeof d.sandboxId=="string"?d.sandboxId:null,is_ended:d.isEnded===true,total:typeof a.total=="number"?a.total:p+g.length,events:g.map((m,f)=>({seq:p+f,type:kc(m),data:m&&typeof m=="object"&&!Array.isArray(m)?m:{}})),gateway_calls:lc(a.gatewayCalls),stored_at:Jt(a.storedAt,g.length,"Analysis transcript response")}},artifact:s,download:(async(c,u)=>Cr(e,`/api/analyses/${encodeURIComponent(c)}/download`,u,`analysis-${c}.tar.gz`)),async defaults(c){return await(await x(e,`/api/analyses/defaults${tc(c)}`)).json()},filesystem:c=>Oi(e,`/api/analyses/${encodeURIComponent(c)}`)}}function vr(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 Sc(t){let e=Ee("checks",t);async function n(u){let l=await x(e,`/api/checks/${encodeURIComponent(u)}`);return vr(await l.json())}async function r(u){let l=await x(e,`/api/checks${ce(u,{scope:u?.scope,status:u?.status&&u.status.length>0?u.status.join(","):void 0,dataset:u?.dataset})}`);return X(await l.json(),vr)}let s=new Set;async function o(u){let l;try{l=await x(e,`/api/traces/trials/${encodeURIComponent(u)}/artifacts?what=task-check`);}catch(d){throw d instanceof V&&d.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()`):d}let a=(await l.json()).task_check;if(!a||typeof a!="object"||Array.isArray(a))throw new Error(`The traces feed served no readable task check for "${u}"`);return s.add(u),a}async function c(u,l){s.has(u)||await o(u);let a=await(await x(e,`/api/traces/trials/${encodeURIComponent(u)}/artifacts?what=${l}`)).json();return l==="agent-home"?a.files??null:a.log??null}return {async create(u){let{source:l,onUploadProgress:i,...a}=u,d={config:JSON.stringify(a)};if("dataset"in l){if(typeof l.dataset!="string"||l.dataset.trim()==="")throw new Error('checks().create(): source.dataset must be "name" or "name@version"');let _=await x(e,"/api/checks",{method:"POST",body:Fe({...d,dataset:l.dataset.trim()})});return vr(await _.json())}let{existsSync:p,statSync:g}=await import('fs'),{basename:m,resolve:f}=await import('path'),h=f(l.directory);if(!p(h)||!g(h).isDirectory())throw new Error(`checks().create(): Path '${l.directory}' does not exist or is not a directory`);let b=await ct(e,"/api/checks",{directory:h,fields:d,filename:`${m(h)||"task"}.tar.gz`,...i!==void 0?{onBytes:i}:{}});return vr(await b.json())},get:n,async defaults(u){return await(await x(e,`/api/checks/defaults${tc(u)}`)).json()},list(u){return be(l=>r({...l,scope:u?.scope,status:u?.status,dataset:u?.dataset}),u)},task:o,async transcript(u,l){let i=l?.since;if(i!==void 0&&(!Number.isInteger(i)||i<0))throw new Error(`transcript() since must be a non-negative integer, got ${i}`);let d=await(await x(e,`/api/traces/trials/${encodeURIComponent(u)}/events`+(i!==void 0?`?since=${i}`:""))).json(),p=d.session??{};if(p.kind!=="check"){let f=typeof p.kind=="string"?p.kind:"trial";throw new Error(`"${u}" is not a task check (the feed resolves it as a ${f}) \u2014 for a trial's trace use trials(), for an analysis's use analyses()`)}let g=i??0,m=Array.isArray(d.events)?d.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 d.total=="number"?d.total:g+m.length,events:m.map((f,h)=>({seq:g+h,type:kc(f),data:f&&typeof f=="object"&&!Array.isArray(f)?f:{}})),gateway_calls:lc(d.gatewayCalls),stored_at:Jt(d.storedAt,m.length,"Task check transcript response")}},artifact:c,download:(async(u,l)=>Cr(e,`/api/checks/${encodeURIComponent(u)}/download`,l,`check-${u}.tar.gz`)),async share(u,l){let i=await x(e,`/api/checks/${encodeURIComponent(u)}/share`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(l)});return le(await i.json())},async unshare(u,l){let i=await x(e,`/api/checks/${encodeURIComponent(u)}/unshare`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(l)});return le(await i.json())},async shares(u){let l=await x(e,`/api/checks/${encodeURIComponent(u)}/shares`);return le(await l.json())},async watch(u,l){let i=l?.pollIntervalMs??Ht,a=i,d=null;for(;;){Ae(l?.signal);let p;try{p=await n(u);}catch(f){if(f instanceof V&&(f.status===429||f.status===503)){await se(Math.max((f.retryAfterSec??0)*1e3,a),l?.signal),a=Math.min(a*2,Gt);continue}throw f}let g=JSON.stringify(p.results.map(f=>[f.task_name,f.status])),m=g!==d;if(m&&(d=g,l?.onProgress?.(p)),p.status==="completed")return p;a=m?i:Math.min(a*2,Gt),await se(a,l?.signal);}},taskFilesystem:(u,l)=>Oi(e,`/api/checks/${encodeURIComponent(u)}/tasks/${encodeURIComponent(l)}`)}}function jm(t){let e=Ee("auth",t);return {async status(){let r=await(await x(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 Jm(t){return {user_id:t.user_id,email:t.email,role:t.role==="owner"?"owner":"member",joined_at:t.joined_at}}function Km(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 Sr(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 Vm(t){let e=t.quota??{},n=t.usage??{},r=s=>typeof s=="number"?s:0;return {...Sr(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 Er(t){let e=Ee("orgs",t);return {async list(){let r=await(await x(e,"/api/orgs")).json();return (Array.isArray(r.items)?r.items:[]).map(s=>Sr(s))},async get(n){let r=await x(e,`/api/orgs/${encodeURIComponent(n)}`);return Vm(await r.json())},async create(n,r){let s=await x(e,"/api/orgs",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({slug:n,...r?.displayName!==void 0?{display_name:r.displayName}:{}})});return Sr(await s.json())},async invite(n){let r=await x(e,`/api/orgs/${encodeURIComponent(n)}/invites`,{method:"POST"});return Km(await r.json())},async join(n){let s=await(await x(e,"/api/orgs/invites/accept",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:n})})).json();return {org:Sr(s.org??{}),already_member:s.already_member===true}},async members(n){let s=await(await x(e,`/api/orgs/${encodeURIComponent(n)}/members`)).json();return (Array.isArray(s.items)?s.items:[]).map(o=>Jm(o))}}}function xc(t){try{let e=JSON.parse(t);return e&&typeof e=="object"?e:{value:e}}catch{return {raw:t}}}function Gm(t){let e,n,r,s,o,c,u,l;return {get datasets(){return e??=hc(t)},get agents(){return n??=yc(t)},get jobs(){return r??=_c(t)},get trials(){return s??=wc(t)},get analyses(){return o??=vc(t)},get checks(){return c??=Sc(t)},get skills(){return u??=bc(t)},get orgs(){return l??=Er(t)},meta(){return Rc(t)}}}async function Rc(t){let e=(t?.baseUrl||process.env.EVOLVE_DASHBOARD_URL||M).replace(/\/$/,""),n=await fetch(`${e}/api/meta`);return n.ok||await Yt(n),await n.json()}async function Cc(t,e){try{await Er({apiKey:e,baseUrl:Je()}).get(t);}catch(n){throw n instanceof V&&n.status===404?new D("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 Mi(t){return t.delivery==="direct"}var Pr=18181,Q="/tmp/evolve-managed-secrets",Zt=`${Q}/proxy.py`,pt=`${Q}/config.json`,Ne=`${Q}/ca.crt`,Tr=`${Q}/ca.key`,dt=`${Q}/ca-bundle.crt`,Pc=["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 Ac(){return [...Pc]}var Ic=String.raw`#!/usr/bin/env python3
233
238
  import base64
234
239
  import json
235
240
  import os
@@ -645,24 +650,24 @@ def serve():
645
650
  if __name__ == "__main__":
646
651
  register_channel()
647
652
  serve()
648
- `;function Ep(t){return (t||process.env.EVOLVE_DASHBOARD_URL||T).replace(/\/$/,"")}function Tp(t){let e=t.apiKey||process.env.EVOLVE_API_KEY;if(!e)throw new Error("EVOLVE_API_KEY is required for managed secrets");return e}async function Pp(t){return await t.text().catch(()=>"")}async function Ve(t,e,n={}){let r=await fetch(`${Ep(t.dashboardUrl)}${e}`,{...n,headers:{Authorization:`Bearer ${Tp(t)}`,accept:"application/json",...n.body?{"content-type":"application/json"}:{},...n.headers||{}}});if(!r.ok)throw new Error(`Managed secrets request failed (${r.status}): ${await Pp(r)}`);return await r.json()}function Ap(t){let e=n=>Array.isArray(n)?n.filter(r=>typeof r=="string"):[];return {id:String(t.id??""),name:String(t.name??""),...typeof t.label=="string"?{label:t.label}:{},...t.delivery==="brokered"||t.delivery==="direct"?{delivery:t.delivery}:{},allowedHosts:e(t.allowed_hosts??t.allowedHosts),allowedPathPrefixes:e(t.allowed_path_prefixes??t.allowedPathPrefixes),allowedMethods:e(t.allowed_methods??t.allowedMethods),createdAt:String(t.created_at??t.createdAt??""),updatedAt:String(t.updated_at??t.updatedAt??""),lastUsedAt:typeof(t.last_used_at??t.lastUsedAt)=="string"?t.last_used_at??t.lastUsedAt:null}}function Os(t={}){return {async list(){return (await Ve(t,"/api/managed-secrets")).secrets??[]},async set(e){let n={name:e.name,value:e.value,delivery:e.delivery,...e.label!==void 0?{label:e.label}:{},...e.allowedHosts!==void 0?{allowed_hosts:e.allowedHosts}:{},...e.allowedPathPrefixes!==void 0?{allowed_path_prefixes:e.allowedPathPrefixes}:{},...e.allowedMethods!==void 0?{allowed_methods:e.allowedMethods}:{}},r=await Ve(t,"/api/managed-secrets",{method:"POST",body:JSON.stringify(n)});return {status:r.status,secret:Ap(r.secret??{})}},async delete(e){let n=await Ve(t,"/api/managed-secrets",{method:"DELETE",body:JSON.stringify({name:e.name,...e.label!==void 0?{label:e.label}:{}})});return {ok:n.ok,name:n.name,label:n.label}}}}function Ip(t){return Array.isArray(t)&&t.every(e=>typeof e=="string")}function rl(t){try{return new URL(t).protocol==="https:"}catch{return false}}function Op(t){if(!t||typeof t!="object"||Array.isArray(t))return false;let e=t;return typeof e.token=="string"&&e.token.startsWith("evrt_")&&typeof e.bindingSecret=="string"&&e.bindingSecret.startsWith("evrb_")&&typeof e.egressUrl=="string"&&rl(e.egressUrl)&&typeof e.channelUrl=="string"&&rl(e.channelUrl)&&typeof e.expiresAt=="string"&&Array.isArray(e.env)&&e.env.every(n=>{if(!n||typeof n!="object"||Array.isArray(n))return false;let r=n;return typeof r.name!="string"||typeof r.envName!="string"||!Ip(r.allowedHosts)?false:r.delivery==="direct"?typeof r.value=="string"&&r.value.length>0:(r.delivery===void 0||r.delivery==="brokered")&&typeof r.placeholder=="string"&&r.placeholder.startsWith("evsec_")&&r.value===void 0})}async function ll(t,e){let n=await Ve(t,"/api/managed-secrets/runtime-token",{method:"POST",body:JSON.stringify(e)});if(!Op(n))throw new Error("Invalid managed secret runtime token response");return n}async function cl(t,e){return (await Ve(t,"/api/managed-secrets/runtime-token",{method:"PATCH",body:JSON.stringify(e)})).ok}async function dl(t,e){return (await Ve(t,"/api/managed-secrets/runtime-token",{method:"DELETE",body:JSON.stringify(e)})).ok}var Mp=/^[A-Za-z0-9._-]{1,80}$/;function Dp(t){if(!Array.isArray(t)||t.length===0)throw new Error("withManagedSecrets() requires at least one secret");return t.map((e,n)=>{if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`managedSecrets[${n}] must be an object with a name`);let r=sl(e.name,`managedSecrets[${n}].name`),s;if(e.label!==void 0){if(typeof e.label!="string"||!Mp.test(e.label.trim()))throw new Error(`managedSecrets[${n}].label may contain only letters, numbers, dots, underscores, and hyphens (at most 80 characters)`);s=e.label.trim();}let a=e.as===void 0?void 0:sl(e.as,`managedSecrets[${n}].as`);return {name:r,...s!==void 0?{label:s}:{},...a!==void 0?{as:a}:{}}})}function sl(t,e){if(typeof t!="string"||!t.trim())throw new Error(`${e} is required`);let n=t.trim().toUpperCase();if(!/^[A-Z_][A-Z0-9_]{0,127}$/.test(n))throw new Error(`${e} must be a valid environment variable name`);if(n.startsWith("EVOLVE_"))throw new Error(`${e} cannot use the reserved EVOLVE_ prefix`);return n}function Up(t){let e=new Set(["EVOLVE_API_KEY","EVOLVE_PROVIDER_RUNTIME_BINDING","GEMINI_DEFAULT_AUTH_TYPE",...il]),n=r=>{r&&e.add(r);};n(t.apiKeyEnv),n(t.baseUrlEnv),n(t.customHeadersEnv),n(t.gatewayConfigEnv),t.spendTrackingEnvs&&(n(t.spendTrackingEnvs.sessionTagEnv),n(t.spendTrackingEnvs.runTagEnv));for(let r of Object.values(t.providerEnvMap??{}))n(r.keyEnv);return e}function ul(t,e){if(!t)return;let n=Dp(t),r=Up(e),s=new Set;for(let a of n){let d=a.as||a.name;if(r.has(d))throw new Error(`${d} is reserved for Evolve-managed sandbox services and cannot be used as a managed secret env var`);if(s.has(d))throw new Error(`duplicate managed secret env var: ${d}`);s.add(d);}return n}function Ms(t){return t.env.some(e=>!Is(e))}function pl(t){let e={};for(let s of t.env)Is(s)?e[s.envName]=s.value:e[s.envName]=s.placeholder;if(!Ms(t))return e;let n=`http://127.0.0.1:${Ln}`;e.HTTPS_PROXY=n,e.https_proxy=n,e.NODE_EXTRA_CA_CERTS=we,e.SSL_CERT_FILE=Ke,e.REQUESTS_CA_BUNDLE=Ke,e.CURL_CA_BUNDLE=Ke,e.GIT_SSL_CAINFO=Ke;let r=new URL(t.egressUrl).hostname;return e.NO_PROXY=`localhost,127.0.0.1,::1,${r}`,e.no_proxy=e.NO_PROXY,e}function gl(t){let e=t.env.filter(r=>!Is(r)),n=Array.from(new Set(e.flatMap(r=>r.allowedHosts)));return JSON.stringify({egress_url:t.egressUrl,channel_url:t.channelUrl,token:t.token,binding:t.bindingSecret,hosts:n,placeholders:e.map(r=>r.placeholder),base_dir:B,ca_cert:we,ca_key:Un,port:Ln,max_body_bytes:10*1024*1024},null,2)}function ml(){return ["umask 077",`mkdir -p ${B}/certs`,`chmod 700 ${B} ${B}/certs`,`chmod 700 ${Pt} 2>/dev/null || true`,`chmod 600 ${Ge} 2>/dev/null || true`,`if [ ! -f ${Un} ]; then openssl genrsa -out ${Un} 2048 >/dev/null 2>&1; fi`,`if [ ! -f ${we} ]; then openssl req -x509 -new -nodes -key ${Un} -sha256 -days 30 -subj "/CN=Evolve Managed Secrets" -addext "basicConstraints=critical,CA:TRUE" -addext "keyUsage=critical,keyCertSign,cRLSign" -out ${we} >/dev/null 2>&1; fi`,`SYSTEM_CA_BUNDLE=""; for p in /etc/ssl/certs/ca-certificates.crt /etc/pki/tls/certs/ca-bundle.crt /etc/ssl/ca-bundle.pem; do if [ -f "$p" ]; then SYSTEM_CA_BUNDLE="$p"; break; fi; done; if [ -n "$SYSTEM_CA_BUNDLE" ]; then cat "$SYSTEM_CA_BUNDLE" ${we} > ${Ke}; else cp ${we} ${Ke}; fi`,`if command -v update-ca-certificates >/dev/null 2>&1; then cp ${we} /usr/local/share/ca-certificates/evolve-managed-secrets.crt 2>/dev/null && update-ca-certificates >/dev/null 2>&1 || true; fi`].join(" && ")}function fl(){return `umask 077 && exec python3 ${Pt} ${Ge}`}function hl(){return `rm -f ${Ge}`}function At(t){return `'${t.replaceAll("'",`'"'"'`)}'`}function Lp(t){let e=t.trim();if(e==="")return [];let n=Buffer.from(e,"base64"),r=[],s=0;for(let a=0;a<n.length;a++)n[a]===0&&(r.push(n.toString("utf8",s,a)),s=a+1);return s<n.length&&r.push(n.toString("utf8",s,n.length)),r}async function yl(t,e,n){if(n.length===0)throw new Error("collectArtifacts() requires at least one path.");let r=n.map(o=>{if(!o||o.includes("\0"))throw new Error(`Invalid artifact path: ${JSON.stringify(o)}`);let l=Z.posix.normalize(o);if(!Z.posix.isAbsolute(l)&&(l===".."||l.startsWith("../")))throw new Error(`Artifact path escapes the working directory: ${o}`);return Z.posix.isAbsolute(l)?l:Z.posix.join(e,l)}),a=(await t.commands.run(r.map(o=>`if [ ! -e ${At(o)} ]; then echo MISSING ${At(o)}; elif [ ! -r ${At(o)} ]; then echo UNREADABLE ${At(o)}; fi`).join("; "),{cwd:e,timeoutMs:15e3})).stdout.split(`
649
- `).map(o=>o.trim()).filter(Boolean);if(a.length>0)throw new Error(`Artifact roots are not collectable: ${a.join("; ")}`);let d;try{d=await t.commands.run(`set -o pipefail 2>/dev/null; find -- ${r.map(At).join(" ")} -type f -printf '%p\\0%s\\0' | base64 -w0`,{cwd:e,timeoutMs:3e4});}catch(o){throw new Error(`Artifact listing failed: ${o.message}`)}if(d.exitCode!==0)throw new Error(`Artifact listing failed (exit ${d.exitCode}): ${(d.stderr||"").slice(0,500)}`);let u=Lp(d.stdout);if(u.length%2!==0)throw new Error("Sandbox returned malformed artifact metadata.");let c=new Map;for(let o=0;o<u.length;o+=2){let l=u[o],p=Number(u[o+1]);if(!Number.isSafeInteger(p)||p<0)throw new Error(`Sandbox returned an invalid artifact size: ${l}`);c.has(l)||c.set(l,p);}let i={};for(let o of [...c.keys()].sort()){let l=r.some(m=>o===m||o.startsWith(`${m.replace(/\/$/,"")}/`));if(!Z.posix.isAbsolute(o)||!l)throw new Error(`Sandbox returned an invalid artifact path: ${o}`);let p=Z.posix.relative(e,o),g=p&&p!==".."&&!p.startsWith("../")?p:o;i[g]=await t.files.read(o);}return i}var $n="EVOLVE_PROVIDER_RUNTIME_BINDING",Ds="gemini-api-key";function It(t){switch(t){case "claude":return "anthropic";case "codex":return "openai";case "gemini":return "gemini";case "qwen":return "dashscope";case "kimi":return "kimi";case "opencode":return "openrouter";case "droid":return "droid";default:return null}}function jp(t){return t.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\$/g,"\\$").replace(/`/g,"\\`")}function bl(t){return `${t}-${crypto.randomBytes(8).toString("hex")}`}function Us(t,e,n="newline"){let r=new Map;if(t){let s=n==="comma"?t.split(/,(?=\s*[^,:]+:)/):t.split(/\r?\n/);for(let a of s){let d=a.trim();if(!d)continue;let u=d.indexOf(":");if(u<=0)continue;let c=d.slice(0,u).trim(),i=d.slice(u+1).trim();r.set(c.toLowerCase(),`${c}: ${i}`);}}for(let[s,a]of Object.entries(e)){let d=s.toLowerCase();if(d===re&&r.has(d)&&n==="newline"){let u=r.get(d),c=u.slice(u.indexOf(":")+1).trim();r.set(d,`${s}: ${c},${a}`);}else r.set(d,`${s}: ${a}`);}return Array.from(r.values()).join(n==="comma"?", ":`
650
- `)}var Jp=262144,Kp=128e3,Vp=new Set(["low","medium","high","xhigh","max"]);function _l(t){if(t)return Vp.has(t)?t:void 0}function Fn(t){let e=t.replace(/\/+$/,"");return e.endsWith("/v1")?e:`${e}/v1`}var Ot=class{agentConfig;options;sandbox;hasRun=false;workingDir;homeDir;lastRunTimestamp;registry;sessionTag;previousSessionTag;sessionLogger;orgResolved=false;activeCommand;activeProcessId=null;activeOperationId=null;activeOperationKind=null;nextOperationId=0;interruptedOperations=new Set;sandboxState;agentState="idle";droidSessionId;managedBrowserSession;providerRuntimeToken;managedSecretRuntimeToken;managedSecretProxy;credentialsSealed=false;skills;resolvedSkillsList;storage;lastCheckpointId;zodSchema;jsonSchema;schemaOptions;compiledValidator;constructor(e,n={}){if(it(e),Lr(n.observability),n.managedSecrets){if(e.isDirectMode)throw new Error("managed secrets are available only in gateway mode with EVOLVE_API_KEY");if(n.sandboxId)throw new Error("managed secrets cannot be used with an existing sandbox; grants are sandbox-scoped.");if(n.sandboxProvider&&!De(n.sandboxProvider))throw new Error("managed secrets require an Evolve-managed sandbox provider")}if(this.agentConfig=e,this.options=n,n.sandboxId&&n.sandboxCreateOptions?.user)throw new Error("sandbox user cannot be enforced when attaching to an existing sandbox; create a fresh sandbox with the user instead");if(this.homeDir=qs(n.sandboxCreateOptions?.user,n.sandboxCreateOptions?.homeDir),this.homeDir!==X){if(n.storage)throw new Error("Checkpoint storage requires the default /home/user sandbox home directory; remove sandbox user/homeDir or storage");if(n.managedBrowser||n.browserCredentials)throw new Error("Managed browser features require the default /home/user sandbox home directory")}if(this.workingDir=n.workingDirectory||n.sandboxCreateOptions?.workingDirectory||`${this.homeDir}/workspace`,this.sandboxState=n.sandboxId?"ready":"stopped",n.workspaceMode==="task"&&[n.context,n.files,n.systemPrompt,n.browserPrompt,n.schema].some(Boolean))throw new Error('workspaceMode "task" cannot be combined with context, files, systemPrompt, browserPrompt, or schema; the task owns the working directory');if(this.skills=n.skills,this.storage=n.storage,n.schema)if(Q(n.schema))this.zodSchema=n.schema,n.schemaOptions&&console.warn("[Evolve] schemaOptions ignored for Zod schemas - use .passthrough(), .strip(), z.coerce instead");else {this.jsonSchema=n.schema,this.schemaOptions=n.schemaOptions;try{let r=this.createAjvValidator();this.compiledValidator=r.compile(this.jsonSchema);}catch(r){throw new Error(`Invalid JSON Schema: ${r.message}`)}}this.registry=V(e.type),this.sessionTag=bl(n.sessionTagPrefix||"evolve");}browserRuntimeInfo(){if(this.managedBrowserSession)return {liveUrl:this.managedBrowserSession.liveUrl,sessionId:this.managedBrowserSession.sessionId,sessionTag:this.managedBrowserSession.sessionTag}}browserResponseInfo(){if(this.managedBrowserSession)return {liveUrl:this.managedBrowserSession.liveUrl}}emitLifecycle(e,n){let r=this.browserRuntimeInfo();e?.onLifecycle?.({sandboxId:this.getSession(),sandbox:this.sandboxState,agent:this.agentState,timestamp:new Date().toISOString(),reason:n,...r?{browser:r}:{}});}invalidateActiveOperation(){this.activeCommand=void 0,this.activeProcessId=null,this.activeOperationId=null,this.activeOperationKind=null;}beginOperation(e,n,r,s){let a=++this.nextOperationId;return this.activeOperationId=a,this.activeOperationKind=e,this.activeCommand=n,this.activeProcessId=n.processId,this.sandboxState="running",this.agentState="running",this.emitLifecycle(r,s),a}finalizeOperation(e,n,r,s="idle",a="ready"){return this.activeOperationId!==e?false:(this.invalidateActiveOperation(),this.sandboxState=a,this.agentState=s,this.emitLifecycle(n,r),true)}watchBackgroundOperation(e,n,r,s,a){let d=n==="run"?"run_background_complete":"command_background_complete",u=n==="run"?"run_background_failed":"command_background_failed",c=n==="run"?"run_interrupted":"command_interrupted";r.wait().then(async i=>{if(this.interruptedOperations.delete(e)||i.exitCode===130){this.finalizeOperation(e,s,c,"interrupted");return}n==="run"&&a&&await this.writeDroidSessionState(a);let l=i.exitCode===0?d:u,p=i.exitCode===0?"idle":"error";this.finalizeOperation(e,s,l,p);}).catch(()=>{this.interruptedOperations.delete(e),this.finalizeOperation(e,s,u,"error");});}createAjvValidator(){let n={...Kn[this.schemaOptions?.mode||"loose"],...this.schemaOptions?.coerceTypes!==void 0&&{coerceTypes:this.schemaOptions.coerceTypes},...this.schemaOptions?.removeAdditional!==void 0&&{removeAdditional:this.schemaOptions.removeAdditional},...this.schemaOptions?.useDefaults!==void 0&&{useDefaults:this.schemaOptions.useDefaults},...this.schemaOptions?.allErrors!==void 0&&{allErrors:this.schemaOptions.allErrors}};return new $p__default.default({...n,strict:false})}async getSandbox(e){if(this.sandbox)return this.sandbox;if(this.credentialsSealed)throw new Error("Agent credentials are sealed and this Evolve instance cannot create or attach another sandbox");if(!this.options.sandboxProvider)throw new Error("No sandbox provider configured");let n=this.options.sandboxProvider;this.sandboxState="booting",this.emitLifecycle(e,"sandbox_boot");let r=false;try{if(this.options.sandboxId)(this.options.mcpServers||this.options.integrations||this.options.plugins||this.options.context||this.options.files||this.options.systemPrompt||this.options.managedBrowser||this.options.browserCredentials)&&console.warn("[Evolve] Connecting to existing sandbox - ignoring mcpServers, integrations, plugins, context, files, systemPrompt, managed browser setup, and browser credentials"),this.sandbox=await n.connect(this.options.sandboxId),this.hasRun=!0,await this.loadDroidSessionState(this.sandbox),this.sandboxState="ready",this.agentState="idle",this.emitLifecycle(e,"sandbox_connected");else {await this.ensureManagedBrowserSession(e),await this.ensureProviderRuntimeToken(),await this.ensureManagedSecretRuntimeToken();let s=this.buildEnvironmentVariables();this.sandbox=await n.create(this.buildSandboxCreateOptions(s)),r=!0,await this.bindProviderRuntimeToken(this.sandbox.sandboxId),await this.bindManagedSecretRuntimeToken(this.sandbox.sandboxId),await this.setupManagedSecretEgress(this.sandbox),await this.setupManagedBrowser(this.sandbox),await this.setupAgentAuth(this.sandbox),await this.setupAgentPlugins(this.sandbox),await this.setupWorkspace(this.sandbox),this.sandboxState="ready",this.agentState="idle",this.emitLifecycle(e,"sandbox_ready");}}catch(s){throw r&&this.sandbox&&(await this.sandbox.kill().catch(()=>{}),this.sandbox=void 0),await this.closeManagedBrowserSession().catch(()=>{}),await this.closeProviderRuntimeToken().catch(()=>{}),await this.closeManagedSecretRuntimeToken().catch(()=>{}),this.sandboxState="error",this.agentState="error",this.emitLifecycle(e,"sandbox_error"),s}return this.sandbox}resolveKimiMaxContextSize(){if(typeof this.agentConfig.maxContextSize=="number")return this.agentConfig.maxContextSize;let e=this.agentConfig.model||this.registry.defaultModel;return Ce(this.registry,e)||Ce(this.registry,this.resolveCommandModel(e))?this.registry.models.find(s=>s.alias===e||s.modelId===e)?.maxContextSize??this.registry.spendTrackingTomlProvider?.maxContextSize??Jp:Kp}reasoningEffort(){return ei(this.agentConfig.type,this.agentConfig.reasoningEffort)}buildKimiDirectModelEnvs(){let e=et(this.reasoningEffort()),n=_l(this.reasoningEffort()),r={KIMI_MODEL_NAME:this.resolveCommandModel(this.agentConfig.model||this.registry.defaultModel),KIMI_MODEL_API_KEY:this.agentConfig.apiKey,KIMI_MODEL_PROVIDER_TYPE:"kimi",KIMI_MODEL_MAX_CONTEXT_SIZE:String(this.resolveKimiMaxContextSize()),KIMI_MODEL_DEFAULT_THINKING:e?"true":"false",KIMI_MODEL_THINKING_MODE:e?"on":"off"};return n&&(r.KIMI_MODEL_THINKING_EFFORT=n),this.agentConfig.baseUrl&&(r.KIMI_MODEL_BASE_URL=this.agentConfig.baseUrl),r}buildEnvironmentVariables(){let e={},n=this.validatedUserSecretsForEnvironment();if(this.agentConfig.type==="kimi"&&this.agentConfig.isDirectMode)Object.assign(e,this.buildKimiDirectModelEnvs());else if(this.agentConfig.oauthFileContent)this.registry.oauthActivationEnv&&(e[this.registry.oauthActivationEnv.key]=this.registry.oauthActivationEnv.value);else if(!(this.agentConfig.type==="kimi"&&!this.agentConfig.isDirectMode)){if(!(!this.agentConfig.isDirectMode&&It(this.agentConfig.type))){if(!(this.registry.skipApiKeyEnvInGateway&&!this.agentConfig.isDirectMode))if(this.registry.providerEnvMap&&!this.agentConfig.isDirectMode)for(let r of Object.values(this.registry.providerEnvMap))e[r.keyEnv]=this.agentConfig.apiKey;else {let r=this.agentConfig.model?.split("/")[0],s=r?this.registry.providerEnvMap?.[r]:void 0,a=s?s.keyEnv:this.registry.apiKeyEnv,d=this.agentConfig.isOAuth&&this.registry.oauthEnv?this.registry.oauthEnv:a;e[d]=this.agentConfig.apiKey;}}}if(this.agentConfig.isDirectMode&&!this.agentConfig.isOAuth&&this.agentConfig.type!=="kimi")this.agentConfig.baseUrl&&this.registry.baseUrlEnv&&(e[this.registry.baseUrlEnv]=this.agentConfig.baseUrl);else if(!this.agentConfig.isDirectMode){let r=Y(this.registry.gatewayPath),s=this.requireActiveProviderRuntimeToken();if(this.registry.gatewayConfigEnv?e[this.registry.gatewayConfigEnv]=this.buildGatewayConfigJson({[H]:this.sessionTag,...this.providerRuntimeHeaderUpdates()}):this.registry.baseUrlEnv&&this.agentConfig.type!=="kimi"&&(e[this.registry.baseUrlEnv]=s?.baseUrl??r),s&&(this.shouldExposeProviderRuntimeTokenEnv()&&(e[this.registry.apiKeyEnv]=s.token),this.agentConfig.type==="gemini"&&(e.GEMINI_DEFAULT_AUTH_TYPE=Ds),this.registry.spendTrackingEnvs&&(e[$n]=s.bindingSecret)),!s){if(It(this.agentConfig.type))throw new Error(`${this.agentConfig.type} gateway mode requires a Dashboard runtime token before sandbox setup`);e[O]=this.agentConfig.apiKey;}}if(this.agentConfig.externalGateway&&this.registry.gatewayConfigEnv&&(e[this.registry.gatewayConfigEnv]=this.buildGatewayConfigJson({})),this.agentConfig.externalGateway&&this.agentConfig.type==="gemini"&&(e.GEMINI_CLI_TRUST_WORKSPACE="true"),this.agentConfig.type==="claude"&&(e.IS_SANDBOX="1"),this.managedBrowserSession&&this.options.managedBrowser&&Object.assign(e,ss(this.options.managedBrowser.provider,this.managedBrowserSession).envs),this.managedSecretRuntimeToken&&Object.assign(e,pl(this.managedSecretRuntimeToken)),n&&Object.assign(e,n),!this.agentConfig.isDirectMode&&this.registry.customHeadersEnv){let r=this.registry.customHeadersEnv,s=this.registry.customHeadersFormat||"newline";e[r]=Us(e[r],{[H]:this.sessionTag,...this.providerRuntimeHeaderUpdates()},s);}return !this.agentConfig.isDirectMode&&this.registry.spendTrackingEnvs&&(e[this.registry.spendTrackingEnvs.sessionTagEnv]=this.sessionTag),e}buildSandboxCreateOptions(e){return {...this.options.sandboxCreateOptions,envs:e,workingDirectory:this.workingDir}}validatedUserSecretsForEnvironment(){let e={...this.options.sandboxCreateOptions?.envs,...this.options.secrets};if(Object.keys(e).length===0)return;let n=new Set;this.agentConfig.isDirectMode||(n.add(O),n.add($n),this.agentConfig.type==="gemini"&&n.add("GEMINI_DEFAULT_AUTH_TYPE"));let r=a=>{a&&n.add(a);};r(this.registry.apiKeyEnv),r(this.registry.baseUrlEnv);for(let a of Object.values(this.registry.providerEnvMap??{}))r(a.keyEnv);if(this.managedSecretRuntimeToken)for(let a of ol())n.add(a);for(let a of this.managedSecretRuntimeToken?.env??[])r(a.envName);let s={};for(let[a,d]of Object.entries(e)){if(n.has(a))throw new Error(`${a} is reserved for Evolve-managed sandbox services and cannot be set with secrets`);a!==this.registry.gatewayConfigEnv&&(s[a]=d);}return s}async ensureManagedBrowserSession(e){this.managedBrowserSession||!this.options.managedBrowser||(this.managedBrowserSession=await Yo(this.options.managedBrowser,this.sessionTag,{browserCredentials:this.options.browserCredentials!==void 0}),this.emitLifecycle(e,"browser_ready"));}async ensureProviderRuntimeToken(){let e=It(this.agentConfig.type);if(this.agentConfig.isDirectMode||!e||!this.options.providerRouting||this.providerRuntimeToken)return;let n;try{n=await ea(this.options.providerRouting,{provider:e,sessionTag:this.sessionTag});}catch(r){throw Zo(r)?new Error(`${e} runtime token endpoint is required in gateway mode: ${r.message}`):r}this.providerRuntimeToken=n,this.providerRuntimeToken&&this.sandbox?.sandboxId&&await this.bindProviderRuntimeToken(this.sandbox.sandboxId);}directSandboxProviderDeclaration(){let e=this.options.sandboxProvider;if(!e||De(e))return;let n=e.providerType;return xe.includes(n)?n:void 0}async bindProviderRuntimeToken(e){if(!this.providerRuntimeToken||!this.options.providerRouting)return;let n=this.directSandboxProviderDeclaration();if(!await ta(this.options.providerRouting,{token:this.providerRuntimeToken.token,sandboxId:e,...n?{directSandboxProvider:n}:{}}))throw new Error("Failed to bind provider runtime token to sandbox")}async setupManagedBrowser(e){if(!this.managedBrowserSession||!this.options.managedBrowser)return;let n=ss(this.options.managedBrowser.provider,this.managedBrowserSession);for(let r of n.directories)await e.files.makeDir(r);for(let r of n.files)await e.files.write(r.path,r.data);}async closeManagedBrowserSession(){if(!this.managedBrowserSession||!this.options.managedBrowser)return;let e=this.managedBrowserSession;this.managedBrowserSession=void 0;try{await Xo(this.options.managedBrowser,e);}catch(n){console.warn(`[Evolve] Managed browser cleanup failed: ${n.message}`);}}async closeProviderRuntimeToken(e=false){if(!this.providerRuntimeToken||!this.options.providerRouting)return;let n=this.providerRuntimeToken,r;for(let a=0;a<3;a++)try{if(!await na(this.options.providerRouting,{token:n.token}))throw new Error("Dashboard returned ok=false");this.providerRuntimeToken=void 0;return}catch(d){r=d,a<2&&await new Promise(u=>setTimeout(u,100*(a+1)));}let s=`Provider runtime token cleanup failed: ${r.message}`;if(e)throw new Error(s);console.warn(`[Evolve] ${s}`),this.providerRuntimeToken=void 0;}async ensureManagedSecretRuntimeToken(){this.managedSecretRuntimeToken||!this.options.managedSecrets||(this.managedSecretRuntimeToken=await ll({apiKey:this.options.managedSecrets.apiKey,dashboardUrl:this.options.managedSecrets.dashboardUrl},{sessionTag:this.sessionTag,secrets:this.options.managedSecrets.secrets}));}async bindManagedSecretRuntimeToken(e){if(!this.managedSecretRuntimeToken||!this.options.managedSecrets)return;if(!await cl({apiKey:this.options.managedSecrets.apiKey,dashboardUrl:this.options.managedSecrets.dashboardUrl},{token:this.managedSecretRuntimeToken.token,sandboxId:e}))throw new Error("Failed to bind managed secret runtime token to sandbox")}async setupManagedSecretEgress(e){if(!this.managedSecretRuntimeToken||!Ms(this.managedSecretRuntimeToken))return;if(await e.files.makeDir(B),await e.commands.run(`umask 077 && mkdir -p ${B}/certs && chmod 700 ${B} ${B}/certs`,{timeoutMs:5e3}),await e.files.write(Pt,al),await e.files.write(Ge,gl(this.managedSecretRuntimeToken)),await e.commands.run(`chmod 700 ${Pt} && chmod 600 ${Ge}`,{timeoutMs:5e3}),await e.commands.run(ml(),{timeoutMs:3e4}),this.managedSecretProxy=await e.commands.spawn(fl(),{timeoutMs:3e4}),(await e.commands.run(`python3 - <<'PY'
653
+ `;function zm(t){return (t||process.env.EVOLVE_DASHBOARD_URL||M).replace(/\/$/,"")}function Hm(t){let e=t.apiKey||process.env.EVOLVE_API_KEY;if(!e)throw new Error("EVOLVE_API_KEY is required for managed secrets");return e}async function qm(t){return await t.text().catch(()=>"")}async function ut(t,e,n={}){let r=await fetch(`${zm(t.dashboardUrl)}${e}`,{...n,headers:{Authorization:`Bearer ${Hm(t)}`,accept:"application/json",...n.body?{"content-type":"application/json"}:{},...n.headers||{}}});if(!r.ok)throw new Error(`Managed secrets request failed (${r.status}): ${await qm(r)}`);return await r.json()}function Wm(t){let e=n=>Array.isArray(n)?n.filter(r=>typeof r=="string"):[];return {id:String(t.id??""),name:String(t.name??""),...typeof t.label=="string"?{label:t.label}:{},...t.delivery==="brokered"||t.delivery==="direct"?{delivery:t.delivery}:{},allowedHosts:e(t.allowed_hosts??t.allowedHosts),allowedPathPrefixes:e(t.allowed_path_prefixes??t.allowedPathPrefixes),allowedMethods:e(t.allowed_methods??t.allowedMethods),createdAt:String(t.created_at??t.createdAt??""),updatedAt:String(t.updated_at??t.updatedAt??""),lastUsedAt:typeof(t.last_used_at??t.lastUsedAt)=="string"?t.last_used_at??t.lastUsedAt:null}}function Di(t={}){return {async list(){return (await ut(t,"/api/managed-secrets")).secrets??[]},async set(e){let n={name:e.name,value:e.value,delivery:e.delivery,...e.label!==void 0?{label:e.label}:{},...e.allowedHosts!==void 0?{allowed_hosts:e.allowedHosts}:{},...e.allowedPathPrefixes!==void 0?{allowed_path_prefixes:e.allowedPathPrefixes}:{},...e.allowedMethods!==void 0?{allowed_methods:e.allowedMethods}:{}},r=await ut(t,"/api/managed-secrets",{method:"POST",body:JSON.stringify(n)});return {status:r.status,secret:Wm(r.secret??{})}},async delete(e){let n=await ut(t,"/api/managed-secrets",{method:"DELETE",body:JSON.stringify({name:e.name,...e.label!==void 0?{label:e.label}:{}})});return {ok:n.ok,name:n.name,label:n.label}}}}function Ym(t){return Array.isArray(t)&&t.every(e=>typeof e=="string")}function Ec(t){try{return new URL(t).protocol==="https:"}catch{return false}}function Zm(t){if(!t||typeof t!="object"||Array.isArray(t))return false;let e=t;return typeof e.token=="string"&&e.token.startsWith("evrt_")&&typeof e.bindingSecret=="string"&&e.bindingSecret.startsWith("evrb_")&&typeof e.egressUrl=="string"&&Ec(e.egressUrl)&&typeof e.channelUrl=="string"&&Ec(e.channelUrl)&&typeof e.expiresAt=="string"&&Array.isArray(e.env)&&e.env.every(n=>{if(!n||typeof n!="object"||Array.isArray(n))return false;let r=n;return typeof r.name!="string"||typeof r.envName!="string"||!Ym(r.allowedHosts)?false:r.delivery==="direct"?typeof r.value=="string"&&r.value.length>0:(r.delivery===void 0||r.delivery==="brokered")&&typeof r.placeholder=="string"&&r.placeholder.startsWith("evsec_")&&r.value===void 0})}async function Oc(t,e){let n=await ut(t,"/api/managed-secrets/runtime-token",{method:"POST",body:JSON.stringify(e)});if(!Zm(n))throw new Error("Invalid managed secret runtime token response");return n}async function Mc(t,e){return (await ut(t,"/api/managed-secrets/runtime-token",{method:"PATCH",body:JSON.stringify(e)})).ok}async function Dc(t,e){return (await ut(t,"/api/managed-secrets/runtime-token",{method:"DELETE",body:JSON.stringify(e)})).ok}var Xm=/^[A-Za-z0-9._-]{1,80}$/;function Qm(t){if(!Array.isArray(t)||t.length===0)throw new Error("withManagedSecrets() requires at least one secret");return t.map((e,n)=>{if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`managedSecrets[${n}] must be an object with a name`);let r=Tc(e.name,`managedSecrets[${n}].name`),s;if(e.label!==void 0){if(typeof e.label!="string"||!Xm.test(e.label.trim()))throw new Error(`managedSecrets[${n}].label may contain only letters, numbers, dots, underscores, and hyphens (at most 80 characters)`);s=e.label.trim();}let o=e.as===void 0?void 0:Tc(e.as,`managedSecrets[${n}].as`);return {name:r,...s!==void 0?{label:s}:{},...o!==void 0?{as:o}:{}}})}function Tc(t,e){if(typeof t!="string"||!t.trim())throw new Error(`${e} is required`);let n=t.trim().toUpperCase();if(!/^[A-Z_][A-Z0-9_]{0,127}$/.test(n))throw new Error(`${e} must be a valid environment variable name`);if(n.startsWith("EVOLVE_"))throw new Error(`${e} cannot use the reserved EVOLVE_ prefix`);return n}function ef(t){let e=new Set(["EVOLVE_API_KEY","EVOLVE_PROVIDER_RUNTIME_BINDING","GEMINI_DEFAULT_AUTH_TYPE",...Pc]),n=r=>{r&&e.add(r);};n(t.apiKeyEnv),n(t.baseUrlEnv),n(t.customHeadersEnv),n(t.gatewayConfigEnv),t.spendTrackingEnvs&&(n(t.spendTrackingEnvs.sessionTagEnv),n(t.spendTrackingEnvs.runTagEnv));for(let r of Object.values(t.providerEnvMap??{}))n(r.keyEnv);return e}function Uc(t,e){if(!t)return;let n=Qm(t),r=ef(e),s=new Set;for(let o of n){let c=o.as||o.name;if(r.has(c))throw new Error(`${c} is reserved for Evolve-managed sandbox services and cannot be used as a managed secret env var`);if(s.has(c))throw new Error(`duplicate managed secret env var: ${c}`);s.add(c);}return n}function Ui(t){return t.env.some(e=>!Mi(e))}function $c(t){let e={};for(let s of t.env)Mi(s)?e[s.envName]=s.value:e[s.envName]=s.placeholder;if(!Ui(t))return e;let n=`http://127.0.0.1:${Pr}`;e.HTTPS_PROXY=n,e.https_proxy=n,e.NODE_EXTRA_CA_CERTS=Ne,e.SSL_CERT_FILE=dt,e.REQUESTS_CA_BUNDLE=dt,e.CURL_CA_BUNDLE=dt,e.GIT_SSL_CAINFO=dt;let r=new URL(t.egressUrl).hostname;return e.NO_PROXY=`localhost,127.0.0.1,::1,${r}`,e.no_proxy=e.NO_PROXY,e}function Lc(t){let e=t.env.filter(r=>!Mi(r)),n=Array.from(new Set(e.flatMap(r=>r.allowedHosts)));return JSON.stringify({egress_url:t.egressUrl,channel_url:t.channelUrl,token:t.token,binding:t.bindingSecret,hosts:n,placeholders:e.map(r=>r.placeholder),base_dir:Q,ca_cert:Ne,ca_key:Tr,port:Pr,max_body_bytes:10*1024*1024},null,2)}function Fc(){return ["umask 077",`mkdir -p ${Q}/certs`,`chmod 700 ${Q} ${Q}/certs`,`chmod 700 ${Zt} 2>/dev/null || true`,`chmod 600 ${pt} 2>/dev/null || true`,`if [ ! -f ${Tr} ]; then openssl genrsa -out ${Tr} 2048 >/dev/null 2>&1; fi`,`if [ ! -f ${Ne} ]; then openssl req -x509 -new -nodes -key ${Tr} -sha256 -days 30 -subj "/CN=Evolve Managed Secrets" -addext "basicConstraints=critical,CA:TRUE" -addext "keyUsage=critical,keyCertSign,cRLSign" -out ${Ne} >/dev/null 2>&1; fi`,`SYSTEM_CA_BUNDLE=""; for p in /etc/ssl/certs/ca-certificates.crt /etc/pki/tls/certs/ca-bundle.crt /etc/ssl/ca-bundle.pem; do if [ -f "$p" ]; then SYSTEM_CA_BUNDLE="$p"; break; fi; done; if [ -n "$SYSTEM_CA_BUNDLE" ]; then cat "$SYSTEM_CA_BUNDLE" ${Ne} > ${dt}; else cp ${Ne} ${dt}; fi`,`if command -v update-ca-certificates >/dev/null 2>&1; then cp ${Ne} /usr/local/share/ca-certificates/evolve-managed-secrets.crt 2>/dev/null && update-ca-certificates >/dev/null 2>&1 || true; fi`].join(" && ")}function Nc(){return `umask 077 && exec python3 ${Zt} ${pt}`}function Bc(){return `rm -f ${pt}`}function Xt(t){return `'${t.replaceAll("'",`'"'"'`)}'`}function tf(t){let e=t.trim();if(e==="")return [];let n=Buffer.from(e,"base64"),r=[],s=0;for(let o=0;o<n.length;o++)n[o]===0&&(r.push(n.toString("utf8",s,o)),s=o+1);return s<n.length&&r.push(n.toString("utf8",s,n.length)),r}async function jc(t,e,n){if(n.length===0)throw new Error("collectArtifacts() requires at least one path.");let r=n.map(a=>{if(!a||a.includes("\0"))throw new Error(`Invalid artifact path: ${JSON.stringify(a)}`);let d=fe.posix.normalize(a);if(!fe.posix.isAbsolute(d)&&(d===".."||d.startsWith("../")))throw new Error(`Artifact path escapes the working directory: ${a}`);return fe.posix.isAbsolute(d)?d:fe.posix.join(e,d)}),o=(await t.commands.run(r.map(a=>`if [ ! -e ${Xt(a)} ]; then echo MISSING ${Xt(a)}; elif [ ! -r ${Xt(a)} ]; then echo UNREADABLE ${Xt(a)}; fi`).join("; "),{cwd:e,timeoutMs:15e3})).stdout.split(`
654
+ `).map(a=>a.trim()).filter(Boolean);if(o.length>0)throw new Error(`Artifact roots are not collectable: ${o.join("; ")}`);let c;try{c=await t.commands.run(`set -o pipefail 2>/dev/null; find -- ${r.map(Xt).join(" ")} -type f -printf '%p\\0%s\\0' | base64 -w0`,{cwd:e,timeoutMs:3e4});}catch(a){throw new Error(`Artifact listing failed: ${a.message}`)}if(c.exitCode!==0)throw new Error(`Artifact listing failed (exit ${c.exitCode}): ${(c.stderr||"").slice(0,500)}`);let u=tf(c.stdout);if(u.length%2!==0)throw new Error("Sandbox returned malformed artifact metadata.");let l=new Map;for(let a=0;a<u.length;a+=2){let d=u[a],p=Number(u[a+1]);if(!Number.isSafeInteger(p)||p<0)throw new Error(`Sandbox returned an invalid artifact size: ${d}`);l.has(d)||l.set(d,p);}let i={};for(let a of [...l.keys()].sort()){let d=r.some(m=>a===m||a.startsWith(`${m.replace(/\/$/,"")}/`));if(!fe.posix.isAbsolute(a)||!d)throw new Error(`Sandbox returned an invalid artifact path: ${a}`);let p=fe.posix.relative(e,a),g=p&&p!==".."&&!p.startsWith("../")?p:a;i[g]=await t.files.read(a);}return i}var Qt="EVOLVE_PROVIDER_RUNTIME_BINDING",$i="gemini-api-key";function en(t){switch(t){case "claude":return "anthropic";case "codex":return "openai";case "gemini":return "gemini";case "qwen":return "dashscope";case "kimi":return "kimi";case "opencode":return "openrouter";case "droid":return "droid";case "pi":return "pi";case "prime-agent":return "prime-agent";case "dsh":return "dsh";case "zcode":return "zcode";case "antigravity":return "antigravity";default:return null}}var Li={AGY_CLI_DISABLE_AUTO_UPDATE:"true"};function af(t){return t.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\$/g,"\\$").replace(/`/g,"\\`")}function Jc(t){return `${t}-${crypto.randomBytes(8).toString("hex")}`}function Fi(t,e,n="newline"){let r=new Map;if(t){let s=n==="comma"?t.split(/,(?=\s*[^,:]+:)/):t.split(/\r?\n/);for(let o of s){let c=o.trim();if(!c)continue;let u=c.indexOf(":");if(u<=0)continue;let l=c.slice(0,u).trim(),i=c.slice(u+1).trim();r.set(l.toLowerCase(),`${l}: ${i}`);}}for(let[s,o]of Object.entries(e)){let c=s.toLowerCase();if(c===ie&&r.has(c)&&n==="newline"){let u=r.get(c),l=u.slice(u.indexOf(":")+1).trim();r.set(c,`${s}: ${l},${o}`);}else r.set(c,`${s}: ${o}`);}return Array.from(r.values()).join(n==="comma"?", ":`
655
+ `)}var lf=262144,cf=128e3,df=new Set(["low","medium","high","xhigh","max"]);function Kc(t){if(t)return df.has(t)?t:void 0}function Ie(t){let e=t.replace(/\/+$/,"");return e.endsWith("/v1")?e:`${e}/v1`}function Vc(t,e){for(let n of t??[]){let r=n.extra?.stopReason;typeof r=="string"&&(e=r==="error"||r==="aborted"),n.update.sessionUpdate==="error"&&n.update.fatal&&(e=true);}return e}var tn=class{agentConfig;options;sandbox;hasRun=false;mcpConfigured=false;workingDir;homeDir;homeOwner;lastRunTimestamp;registry;sessionTag;previousSessionTag;sessionLogger;orgResolved=false;activeCommand;activeProcessId=null;activeOperationId=null;activeOperationKind=null;nextOperationId=0;interruptedOperations=new Set;sandboxState;agentState="idle";capturedSessionId;managedBrowserSession;providerRuntimeToken;managedSecretRuntimeToken;managedSecretProxy;credentialsSealed=false;skills;resolvedSkillsList;storage;lastCheckpointId;zodSchema;jsonSchema;schemaOptions;compiledValidator;constructor(e,n={}){if(St(e),qr(n.observability),n.managedSecrets){if(e.isDirectMode)throw new Error("managed secrets are available only in gateway mode with EVOLVE_API_KEY");if(n.sandboxId)throw new Error("managed secrets cannot be used with an existing sandbox; grants are sandbox-scoped.");if(n.sandboxProvider&&!tt(n.sandboxProvider))throw new Error("managed secrets require an Evolve-managed sandbox provider")}if(this.agentConfig=e,this.options=n,n.sandboxId&&n.sandboxCreateOptions?.user)throw new Error("sandbox user cannot be enforced when attaching to an existing sandbox; create a fresh sandbox with the user instead");this.homeDir=qi(n.sandboxCreateOptions?.user,n.sandboxCreateOptions?.homeDir);let r=n.sandboxCreateOptions?.homeOwner;if(this.homeOwner=r===void 0?void 0:Yr(r),this.homeDir!==G){if(n.storage)throw new Error("Checkpoint storage requires the default /home/user sandbox home directory; remove sandbox user/homeDir or storage");if(n.managedBrowser||n.browserCredentials)throw new Error("Managed browser features require the default /home/user sandbox home directory")}if(this.workingDir=n.workingDirectory||n.sandboxCreateOptions?.workingDirectory||`${this.homeDir}/workspace`,this.sandboxState=n.sandboxId?"ready":"stopped",n.workspaceMode==="task"&&[n.context,n.files,n.systemPrompt,n.browserPrompt,n.schema].some(Boolean))throw new Error('workspaceMode "task" cannot be combined with context, files, systemPrompt, browserPrompt, or schema; the task owns the working directory');if(this.skills=n.skills,this.storage=n.storage,n.schema)if(me(n.schema))this.zodSchema=n.schema,n.schemaOptions&&console.warn("[Evolve] schemaOptions ignored for Zod schemas - use .passthrough(), .strip(), z.coerce instead");else {this.jsonSchema=n.schema,this.schemaOptions=n.schemaOptions;try{let s=this.createAjvValidator();this.compiledValidator=s.compile(this.jsonSchema);}catch(s){throw new Error(`Invalid JSON Schema: ${s.message}`)}}this.registry=te(e.type),this.sessionTag=Jc(n.sessionTagPrefix||"evolve");}browserRuntimeInfo(){if(this.managedBrowserSession)return {liveUrl:this.managedBrowserSession.liveUrl,sessionId:this.managedBrowserSession.sessionId,sessionTag:this.managedBrowserSession.sessionTag}}browserResponseInfo(){if(this.managedBrowserSession)return {liveUrl:this.managedBrowserSession.liveUrl}}emitLifecycle(e,n){let r=this.browserRuntimeInfo();e?.onLifecycle?.({sandboxId:this.getSession(),sandbox:this.sandboxState,agent:this.agentState,timestamp:new Date().toISOString(),reason:n,...r?{browser:r}:{}});}invalidateActiveOperation(){this.activeCommand=void 0,this.activeProcessId=null,this.activeOperationId=null,this.activeOperationKind=null;}beginOperation(e,n,r,s){let o=++this.nextOperationId;return this.activeOperationId=o,this.activeOperationKind=e,this.activeCommand=n,this.activeProcessId=n.processId,this.sandboxState="running",this.agentState="running",this.emitLifecycle(r,s),o}finalizeOperation(e,n,r,s="idle",o="ready"){return this.activeOperationId!==e?false:(this.invalidateActiveOperation(),this.sandboxState=o,this.agentState=s,this.emitLifecycle(n,r),true)}watchBackgroundOperation(e,n,r,s,o,c=()=>false){let u=n==="run"?"run_background_complete":"command_background_complete",l=n==="run"?"run_background_failed":"command_background_failed",i=n==="run"?"run_interrupted":"command_interrupted";r.wait().then(async a=>{if(n==="run"&&o&&await this.removeZcodePerRunConfig(o),this.interruptedOperations.delete(e)||a.exitCode===130){this.finalizeOperation(e,s,i,"interrupted");return}n==="run"&&o&&await this.writeCapturedSessionId(o);let p=a.exitCode===0&&!c();this.finalizeOperation(e,s,p?u:l,p?"idle":"error");}).catch(async()=>{n==="run"&&o&&await this.removeZcodePerRunConfig(o),this.interruptedOperations.delete(e),this.finalizeOperation(e,s,l,"error");});}createAjvValidator(){let n={...Dr[this.schemaOptions?.mode||"loose"],...this.schemaOptions?.coerceTypes!==void 0&&{coerceTypes:this.schemaOptions.coerceTypes},...this.schemaOptions?.removeAdditional!==void 0&&{removeAdditional:this.schemaOptions.removeAdditional},...this.schemaOptions?.useDefaults!==void 0&&{useDefaults:this.schemaOptions.useDefaults},...this.schemaOptions?.allErrors!==void 0&&{allErrors:this.schemaOptions.allErrors}};return new nf__default.default({...n,strict:false})}async getSandbox(e){if(this.sandbox)return this.sandbox;if(this.credentialsSealed)throw new Error("Agent credentials are sealed and this Evolve instance cannot create or attach another sandbox");if(!this.options.sandboxProvider)throw new Error("No sandbox provider configured");let n=this.options.sandboxProvider;this.sandboxState="booting",this.emitLifecycle(e,"sandbox_boot");let r=false;try{if(this.options.sandboxId)(this.options.mcpServers||this.options.integrations||this.options.plugins||this.options.context||this.options.files||this.options.systemPrompt||this.options.managedBrowser||this.options.browserCredentials)&&console.warn("[Evolve] Connecting to existing sandbox - ignoring mcpServers, integrations, plugins, context, files, systemPrompt, managed browser setup, and browser credentials"),this.sandbox=await n.connect(this.options.sandboxId),this.hasRun=!0,await this.loadCapturedSessionId(this.sandbox),this.sandboxState="ready",this.agentState="idle",this.emitLifecycle(e,"sandbox_connected");else {await this.ensureManagedBrowserSession(e),await this.ensureProviderRuntimeToken(),await this.ensureManagedSecretRuntimeToken();let s=this.buildEnvironmentVariables();this.sandbox=await n.create(this.buildSandboxCreateOptions(s)),r=!0,await this.bindProviderRuntimeToken(this.sandbox.sandboxId),await this.bindManagedSecretRuntimeToken(this.sandbox.sandboxId),await this.setupManagedSecretEgress(this.sandbox),await this.setupManagedBrowser(this.sandbox),await this.setupAgentAuth(this.sandbox),await this.setupAgentPlugins(this.sandbox),await this.setupWorkspace(this.sandbox),this.sandboxState="ready",this.agentState="idle",this.emitLifecycle(e,"sandbox_ready");}}catch(s){throw r&&this.sandbox&&(await this.sandbox.kill().catch(()=>{}),this.sandbox=void 0),await this.closeManagedBrowserSession().catch(()=>{}),await this.closeProviderRuntimeToken().catch(()=>{}),await this.closeManagedSecretRuntimeToken().catch(()=>{}),this.sandboxState="error",this.agentState="error",this.emitLifecycle(e,"sandbox_error"),s}return this.sandbox}resolveKimiMaxContextSize(){if(typeof this.agentConfig.maxContextSize=="number")return this.agentConfig.maxContextSize;let e=this.agentConfig.model||this.registry.defaultModel;return Ve(this.registry,e)||Ve(this.registry,this.resolveCommandModel(e))?this.registry.models.find(s=>s.alias===e||s.modelId===e)?.maxContextSize??this.registry.spendTrackingTomlProvider?.maxContextSize??lf:cf}reasoningEffort(){return to(this.agentConfig.type,this.agentConfig.reasoningEffort)}buildKimiDirectModelEnvs(){let e=Oe(this.reasoningEffort()),n=Kc(this.reasoningEffort()),r={KIMI_MODEL_NAME:this.resolveCommandModel(this.agentConfig.model||this.registry.defaultModel),KIMI_MODEL_API_KEY:this.agentConfig.apiKey,KIMI_MODEL_PROVIDER_TYPE:"kimi",KIMI_MODEL_MAX_CONTEXT_SIZE:String(this.resolveKimiMaxContextSize()),KIMI_MODEL_DEFAULT_THINKING:e?"true":"false",KIMI_MODEL_THINKING_MODE:e?"on":"off"};return n&&(r.KIMI_MODEL_THINKING_EFFORT=n),this.agentConfig.baseUrl&&(r.KIMI_MODEL_BASE_URL=this.agentConfig.baseUrl),r}buildEnvironmentVariables(){let e={},n=this.validatedUserSecretsForEnvironment();if(this.agentConfig.type==="kimi"&&this.agentConfig.isDirectMode)Object.assign(e,this.buildKimiDirectModelEnvs());else if(this.agentConfig.oauthFileContent)this.registry.oauthActivationEnv&&(e[this.registry.oauthActivationEnv.key]=this.registry.oauthActivationEnv.value);else if(!(this.agentConfig.type==="kimi"&&!this.agentConfig.isDirectMode)){if(!(!this.agentConfig.isDirectMode&&en(this.agentConfig.type))){if(!(this.registry.skipApiKeyEnvInGateway&&!this.agentConfig.isDirectMode)){if(this.registry.providerEnvMap&&!this.agentConfig.isDirectMode)for(let r of Object.values(this.registry.providerEnvMap))e[r.keyEnv]=this.agentConfig.apiKey;else if(!this.credentialRidesProviderFile()){let r=this.agentConfig.model?.split("/")[0],s=r?this.registry.providerEnvMap?.[r]:void 0,o=s?s.keyEnv:this.registry.apiKeyEnv,c=this.agentConfig.isOAuth&&this.registry.oauthEnv?this.registry.oauthEnv:o;e[c]=this.agentConfig.apiKey;}}}}if(this.agentConfig.isDirectMode&&!this.agentConfig.isOAuth&&this.agentConfig.type!=="kimi")this.agentConfig.baseUrl&&this.registry.baseUrlEnv&&(e[this.registry.baseUrlEnv]=this.agentConfig.baseUrl);else if(!this.agentConfig.isDirectMode){let r=W(this.registry.gatewayPath),s=this.requireActiveProviderRuntimeToken();if(this.registry.gatewayConfigEnv?e[this.registry.gatewayConfigEnv]=this.buildGatewayConfigJson({[Y]:this.sessionTag,...this.providerRuntimeHeaderUpdates()}):this.registry.baseUrlEnv&&this.agentConfig.type!=="kimi"&&(e[this.registry.baseUrlEnv]=s?.baseUrl??r),s&&(this.shouldExposeProviderRuntimeTokenEnv()&&(e[this.registry.apiKeyEnv]=s.token),this.agentConfig.type==="gemini"&&(e.GEMINI_DEFAULT_AUTH_TYPE=$i),this.registry.spendTrackingEnvs&&(e[Qt]=s.bindingSecret)),!s){if(en(this.agentConfig.type))throw new Error(`${this.agentConfig.type} gateway mode requires a Dashboard runtime token before sandbox setup`);e[B]=this.agentConfig.apiKey;}}if(this.agentConfig.externalGateway&&this.registry.gatewayConfigEnv&&(e[this.registry.gatewayConfigEnv]=this.buildGatewayConfigJson({})),this.agentConfig.externalGateway&&this.agentConfig.type==="gemini"&&(e.GEMINI_CLI_TRUST_WORKSPACE="true"),this.agentConfig.type==="claude"&&(e.IS_SANDBOX="1"),this.agentConfig.type==="antigravity"&&Object.assign(e,Li),this.managedBrowserSession&&this.options.managedBrowser&&Object.assign(e,li(this.options.managedBrowser.provider,this.managedBrowserSession).envs),this.managedSecretRuntimeToken&&Object.assign(e,$c(this.managedSecretRuntimeToken)),n&&Object.assign(e,n),!this.agentConfig.isDirectMode&&this.registry.customHeadersEnv){let r=this.registry.customHeadersEnv,s=this.registry.customHeadersFormat||"newline";e[r]=Fi(e[r],{[Y]:this.sessionTag,...this.providerRuntimeHeaderUpdates()},s);}return !this.agentConfig.isDirectMode&&this.registry.spendTrackingEnvs&&(e[this.registry.spendTrackingEnvs.sessionTagEnv]=this.sessionTag),e}buildSandboxCreateOptions(e){return {...this.options.sandboxCreateOptions,envs:e,workingDirectory:this.workingDir}}validatedUserSecretsForEnvironment(){let e={...this.options.sandboxCreateOptions?.envs,...this.options.secrets};if(Object.keys(e).length===0)return;let n=new Set;this.agentConfig.isDirectMode||(n.add(B),n.add(Qt),this.agentConfig.type==="gemini"&&n.add("GEMINI_DEFAULT_AUTH_TYPE"));let r=o=>{o&&n.add(o);};r(this.registry.apiKeyEnv),r(this.registry.baseUrlEnv);for(let o of Object.values(this.registry.providerEnvMap??{}))r(o.keyEnv);if(this.managedSecretRuntimeToken)for(let o of Ac())n.add(o);for(let o of this.managedSecretRuntimeToken?.env??[])r(o.envName);let s={};for(let[o,c]of Object.entries(e)){if(n.has(o))throw new Error(`${o} is reserved for Evolve-managed sandbox services and cannot be set with secrets`);o!==this.registry.gatewayConfigEnv&&(s[o]=c);}return s}async ensureManagedBrowserSession(e){this.managedBrowserSession||!this.options.managedBrowser||(this.managedBrowserSession=await _l(this.options.managedBrowser,this.sessionTag,{browserCredentials:this.options.browserCredentials!==void 0}),this.emitLifecycle(e,"browser_ready"));}async ensureProviderRuntimeToken(){let e=en(this.agentConfig.type);if(this.agentConfig.isDirectMode||!e||!this.options.providerRouting||this.providerRuntimeToken)return;let n;try{n=await Sl(this.options.providerRouting,{provider:e,sessionTag:this.sessionTag});}catch(r){throw vl(r)?new Error(`${e} runtime token endpoint is required in gateway mode: ${r.message}`):r}this.providerRuntimeToken=n,this.providerRuntimeToken&&this.sandbox?.sandboxId&&await this.bindProviderRuntimeToken(this.sandbox.sandboxId);}directSandboxProviderDeclaration(){let e=this.options.sandboxProvider;if(!e||tt(e))return;let n=e.providerType;return Ke.includes(n)?n:void 0}async bindProviderRuntimeToken(e){if(!this.providerRuntimeToken||!this.options.providerRouting)return;let n=this.directSandboxProviderDeclaration();if(!await xl(this.options.providerRouting,{token:this.providerRuntimeToken.token,sandboxId:e,...n?{directSandboxProvider:n}:{}}))throw new Error("Failed to bind provider runtime token to sandbox")}async setupManagedBrowser(e){if(!this.managedBrowserSession||!this.options.managedBrowser)return;let n=li(this.options.managedBrowser.provider,this.managedBrowserSession);for(let r of n.directories)await e.files.makeDir(r);for(let r of n.files)await e.files.write(r.path,r.data);}async closeManagedBrowserSession(){if(!this.managedBrowserSession||!this.options.managedBrowser)return;let e=this.managedBrowserSession;this.managedBrowserSession=void 0;try{await wl(this.options.managedBrowser,e);}catch(n){console.warn(`[Evolve] Managed browser cleanup failed: ${n.message}`);}}async closeProviderRuntimeToken(e=false){if(!this.providerRuntimeToken||!this.options.providerRouting)return;let n=this.providerRuntimeToken,r;for(let o=0;o<3;o++)try{if(!await Rl(this.options.providerRouting,{token:n.token}))throw new Error("Dashboard returned ok=false");this.providerRuntimeToken=void 0;return}catch(c){r=c,o<2&&await new Promise(u=>setTimeout(u,100*(o+1)));}let s=`Provider runtime token cleanup failed: ${r.message}`;if(e)throw new Error(s);console.warn(`[Evolve] ${s}`),this.providerRuntimeToken=void 0;}async ensureManagedSecretRuntimeToken(){this.managedSecretRuntimeToken||!this.options.managedSecrets||(this.managedSecretRuntimeToken=await Oc({apiKey:this.options.managedSecrets.apiKey,dashboardUrl:this.options.managedSecrets.dashboardUrl},{sessionTag:this.sessionTag,secrets:this.options.managedSecrets.secrets}));}async bindManagedSecretRuntimeToken(e){if(!this.managedSecretRuntimeToken||!this.options.managedSecrets)return;if(!await Mc({apiKey:this.options.managedSecrets.apiKey,dashboardUrl:this.options.managedSecrets.dashboardUrl},{token:this.managedSecretRuntimeToken.token,sandboxId:e}))throw new Error("Failed to bind managed secret runtime token to sandbox")}async setupManagedSecretEgress(e){if(!this.managedSecretRuntimeToken||!Ui(this.managedSecretRuntimeToken))return;if(await e.files.makeDir(Q),await e.commands.run(`umask 077 && mkdir -p ${Q}/certs && chmod 700 ${Q} ${Q}/certs`,{timeoutMs:5e3}),await e.files.write(Zt,Ic),await e.files.write(pt,Lc(this.managedSecretRuntimeToken)),await e.commands.run(`chmod 700 ${Zt} && chmod 600 ${pt}`,{timeoutMs:5e3}),await e.commands.run(Fc(),{timeoutMs:3e4}),this.managedSecretProxy=await e.commands.spawn(Nc(),{timeoutMs:3e4}),(await e.commands.run(`python3 - <<'PY'
651
656
  import socket, sys, time
652
657
  for _ in range(50):
653
658
  try:
654
- s = socket.create_connection(("127.0.0.1", ${Ln}), timeout=0.2)
659
+ s = socket.create_connection(("127.0.0.1", ${Pr}), timeout=0.2)
655
660
  s.close()
656
661
  sys.exit(0)
657
662
  except OSError:
658
663
  time.sleep(0.1)
659
664
  sys.exit(1)
660
- PY`,{timeoutMs:1e4})).exitCode!==0)throw new Error("Managed secret egress proxy failed to start");await e.commands.run(hl(),{timeoutMs:5e3});}async closeManagedSecretRuntimeToken(){let e=this.managedSecretProxy;if(this.managedSecretProxy=void 0,e&&await e.kill().catch(()=>false),!this.managedSecretRuntimeToken||!this.options.managedSecrets)return;let n=this.managedSecretRuntimeToken,r;try{for(let s=0;s<3;s++)try{if(!await dl({apiKey:this.options.managedSecrets.apiKey,dashboardUrl:this.options.managedSecrets.dashboardUrl},{token:n.token}))throw new Error("Dashboard returned ok=false");return}catch(a){r=a,s<2&&await new Promise(d=>setTimeout(d,100*(s+1)));}console.warn(`[Evolve] Managed secret runtime token cleanup failed: ${r.message}`);}finally{this.managedSecretRuntimeToken=void 0;}}buildGatewayConfigJson(e){let n=this.requireActiveProviderRuntimeToken(),r=this.agentConfig.externalGateway?this.agentConfig.baseUrl??Fn(Y(this.registry.gatewayPath)):n?.baseUrl??Fn(Y(this.registry.gatewayPath)),s=this.resolveCommandModel(this.agentConfig.model||this.registry.defaultModel),a={},d=this.options.secrets?.[this.registry.gatewayConfigEnv];if(d)try{a=JSON.parse(d);}catch{}let u=a.provider??{},c=u.litellm??{},i=c.options??{},o=c.models??{},l=o[s]??{},p=l.headers??{},g=this.agentConfig.type==="opencode"?Wn(this.reasoningEffort()):void 0,m=l.variants??{},h=g?m[g]??{}:void 0;return a.provider={...u,litellm:{...c,npm:"@ai-sdk/openai-compatible",options:{...i,baseURL:r,apiKey:n?.token??this.agentConfig.apiKey},models:{...o,[s]:{...l,name:s,headers:{...p,...e},...g?{variants:{...m,[g]:{...h,reasoningEffort:g}}}:{}}}}},JSON.stringify(a)}activeProviderRuntimeToken(){let e=It(this.agentConfig.type);return e&&this.providerRuntimeToken?.provider===e?this.providerRuntimeToken:void 0}requireActiveProviderRuntimeToken(){let e=It(this.agentConfig.type),n=this.activeProviderRuntimeToken();if(!this.agentConfig.isDirectMode&&e&&!n)throw new Error(`${this.agentConfig.type} gateway mode requires a Dashboard runtime token before sandbox setup`);return n}async ensureOrgResolved(){this.orgResolved||!this.options.org||this.agentConfig.isDirectMode||(await nl(this.options.org,this.agentConfig.apiKey),this.orgResolved=true);}ensureSessionLogger(e){if(this.sessionLogger)return;let n=this.options.sandboxProvider;this.sessionLogger=new lt({provider:n?.name||n?.providerType||"unknown",agent:this.agentConfig.type,model:this.agentConfig.model||this.registry.defaultModel,reasoningEffort:this.reasoningEffort(),sandboxId:e.sandboxId,tag:this.sessionTag,org:this.options.org,apiKey:this.agentConfig.isDirectMode?void 0:this.agentConfig.apiKey,observability:{...this.options.observability,...this.managedBrowserSession&&this.options.managedBrowser?{browser_provider:this.options.managedBrowser.provider,browser_session_id:this.managedBrowserSession.id,dashboard_session_id:this.managedBrowserSession.sessionId,browser_session_tag:this.managedBrowserSession.sessionTag,browser_live_url:this.managedBrowserSession.liveUrl}:{}}});}async flushSessionLoggerWithTimeout(e=2e3){this.sessionLogger&&await Promise.race([this.sessionLogger.flush(),new Promise(n=>setTimeout(n,e))]);}requiresPreRunDashboardIngest(){return !!(this.activeProviderRuntimeToken()||this.managedSecretRuntimeToken)}providerRuntimeHeaderUpdates(){let e=this.activeProviderRuntimeToken();return e?{[as]:e.bindingSecret}:{}}shouldExposeProviderRuntimeTokenEnv(){return this.agentConfig.type!=="kimi"&&!this.registry.gatewayConfigEnv}buildProviderRuntimeProcessEnvs(){if(this.agentConfig.externalGateway){if(this.agentConfig.type==="kimi")return this.buildKimiDirectModelEnvs();let r={[this.registry.apiKeyEnv]:this.agentConfig.apiKey};return this.registry.baseUrlEnv&&this.agentConfig.baseUrl&&(r[this.registry.baseUrlEnv]=this.agentConfig.baseUrl),this.registry.gatewayConfigEnv&&(r[this.registry.gatewayConfigEnv]=this.buildGatewayConfigJson({})),this.agentConfig.type==="gemini"&&(r.GEMINI_CLI_TRUST_WORKSPACE="true"),r}let e=this.activeProviderRuntimeToken();if(!e)return {};let n={};if(this.shouldExposeProviderRuntimeTokenEnv()&&(n[this.registry.apiKeyEnv]=e.token),this.agentConfig.type==="gemini"&&(n.GEMINI_DEFAULT_AUTH_TYPE=Ds),this.registry.baseUrlEnv&&this.shouldExposeProviderRuntimeTokenEnv()&&(n[this.registry.baseUrlEnv]=e.baseUrl),this.registry.spendTrackingEnvs&&(n[$n]=e.bindingSecret),this.registry.customHeadersEnv){let r=this.registry.customHeadersEnv,s=this.registry.customHeadersFormat||"newline";n[r]=Us(this.options.secrets?.[r],this.providerRuntimeHeaderUpdates(),s);}return n}buildRunEnvs(e){if(this.agentConfig.externalGateway)return this.buildProviderRuntimeProcessEnvs();if(this.agentConfig.isDirectMode)return;let n=this.buildProviderRuntimeProcessEnvs(),r=this.registry.customHeadersEnv;if(r){let a=this.options.secrets?.[r],d=this.registry.customHeadersFormat||"newline";return n[r]=Us(a,{[H]:this.sessionTag,[re]:`${he}${e}`,...this.providerRuntimeHeaderUpdates()},d),n}let s=this.registry.spendTrackingEnvs;return s?{...n,[s.sessionTagEnv]:this.sessionTag,[s.runTagEnv]:`${he}${e}`}:this.registry.gatewayConfigEnv?{...n,[this.registry.gatewayConfigEnv]:this.buildGatewayConfigJson({[H]:this.sessionTag,[re]:`${he}${e}`,...this.providerRuntimeHeaderUpdates()})}:Object.keys(n).length>0?n:void 0}async writeCodexGatewayProviderConfig(e){if(this.agentConfig.type==="codex"){if(this.agentConfig.externalGateway){await zt(e,this.agentConfig.baseUrl||Y(),void 0,void 0,this.homeDir);return}this.agentConfig.isDirectMode||!this.registry.spendTrackingEnvs||await zt(e,this.activeProviderRuntimeToken()?.baseUrl||this.agentConfig.baseUrl||Y(),this.registry.spendTrackingEnvs,this.activeProviderRuntimeToken()?{[as]:$n}:void 0,this.homeDir);}}captureDroidSession(e,n){if(this.agentConfig.type!=="droid")return;let r=n?.find(a=>typeof a.sessionId=="string"&&a.sessionId.length>0)?.sessionId;if(r){this.droidSessionId=r;return}let s=this.extractDroidSessionId(e);s&&(this.droidSessionId=s);}extractDroidSessionId(e){try{return this.findDroidSessionId(JSON.parse(e))}catch{return}}findDroidSessionId(e){if(!e||typeof e!="object"||Array.isArray(e))return;let n=e,r=n.sessionId??n.session_id;return typeof r=="string"&&r.length>0?r:this.findDroidSessionId(n.result)??this.findDroidSessionId(n.params)??this.findDroidSessionId(n.notification)}droidSessionStatePath(){return `${this.homeDir}/.factory/evolve-session.json`}async loadDroidSessionState(e){if(!(this.agentConfig.type!=="droid"||this.droidSessionId))try{let n=await e.files.read(this.droidSessionStatePath());if(typeof n!="string")return;let r=JSON.parse(n);typeof r.sessionId=="string"&&r.sessionId.length>0&&(this.droidSessionId=r.sessionId);}catch{}}async writeDroidSessionState(e){this.agentConfig.type!=="droid"||!this.droidSessionId||(await e.files.makeDir(`${this.homeDir}/.factory`),await e.files.write(this.droidSessionStatePath(),JSON.stringify({sessionId:this.droidSessionId},null,2)));}resolveCommandModel(e){return (this.agentConfig.isDirectMode?this.registry.directModelAliases:this.registry.gatewayModelAliases)?.[e]??e}droidSettingsModel(){let e=this.agentConfig.model||this.registry.defaultModel;return this.agentConfig.externalGateway?ti(this.registry,e):this.resolveCommandModel(e)}async setupAgentAuth(e){if(this.agentConfig.oauthFileContent&&this.registry.oauthFileName){let n=N(this.registry.mcpConfig.settingsDir,this.homeDir);await e.files.makeDir(n),await e.files.write(`${n}/${this.registry.oauthFileName}`,this.agentConfig.oauthFileContent);return}this.agentConfig.type==="gemini"&&(!this.agentConfig.isDirectMode||this.agentConfig.externalGateway)&&await this.writeGeminiGatewayAuthSettings(e),this.registry.setupCommand&&await e.commands.run(this.registry.setupCommand,{timeoutMs:3e4});}async writeGeminiGatewayAuthSettings(e){let n=N(this.registry.mcpConfig.settingsDir,this.homeDir),r=`${n}/${this.registry.mcpConfig.filename}`;await e.files.makeDir(n);let s={};try{let u=await e.files.read(r);typeof u=="string"&&u.trim()&&(s=JSON.parse(u));}catch(u){let c=u.message||"";if(!/not found|no such file|does not exist/i.test(c))throw u}let a=typeof s.security=="object"&&s.security!==null?s.security:{},d=typeof a.auth=="object"&&a.auth!==null?a.auth:{};s.security={...a,auth:{...d,selectedType:Ds}},await e.files.write(r,JSON.stringify(s,null,2));}async setupAgentPlugins(e){await jo(this.agentConfig.type,e,this.options.plugins);}assertProviderRuntimeDoesNotExposeGatewayKey(e){if(!this.activeProviderRuntimeToken())return;let n=this.agentConfig.apiKey;for(let[r,s]of Object.entries(e))for(let a of Object.values(s.headers||{}))if(a.includes(n))throw new Error(`MCP server "${r}" would expose the Evolve API key inside the sandbox. Use managed agent-browser or remove this gateway-authenticated MCP server.`)}async setupWorkspace(e,n){let r=this.options.workspaceMode||"knowledge";if(r!=="task"){let a=r==="swe"?`${this.workingDir}/repo ${this.workingDir}/context ${this.workingDir}/scripts ${this.workingDir}/temp ${this.workingDir}/output`:`${this.workingDir}/context ${this.workingDir}/scripts ${this.workingDir}/temp ${this.workingDir}/output`;if(await e.commands.run(`mkdir -p ${a}`,{timeoutMs:3e4}),!n?.skipSystemPrompt){let d=qr({workingDir:this.workingDir,systemPrompt:this.options.systemPrompt,browserPrompt:this.options.browserPrompt,schema:this.zodSchema||this.jsonSchema,mode:r}),u=`${this.workingDir}/${this.registry.systemPromptFile}`;await e.files.write(u,d);}this.options.context&&await this.uploadContextFiles(e,this.options.context),this.options.files&&await this.uploadWorkspaceFiles(e,this.options.files);}let s={...this.options.mcpServers};if(this.options.integrations){let a=await go({...this.options.integrations,sessionTag:this.sessionTag});s={...s,integrations:{type:"http",url:a.url,headers:a.headers}};}if(this.options.browserCredentials){if(!this.options.managedBrowser||this.options.managedBrowser.provider!=="agent-browser")throw new Error("Browser credentials require managed remote agent-browser.");if(!this.managedBrowserSession?.id||!this.managedBrowserSession.sessionTag||!this.managedBrowserSession.browserAuthGrantToken)throw new Error("Managed browser session is missing browser credential grant data.");let a=await Qo({apiKey:this.options.browserCredentials.apiKey,dashboardUrl:this.options.browserCredentials.dashboardUrl,browserSessionId:this.managedBrowserSession.id,sessionTag:this.managedBrowserSession.sessionTag,grantToken:this.managedBrowserSession.browserAuthGrantToken,config:this.options.browserCredentials.config});s={...s,[is]:a};}await this.writeNativeAgentConfig(e),Object.keys(s).length>0&&(this.assertProviderRuntimeDoesNotExposeGatewayKey(s),await or(this.agentConfig.type,e,this.workingDir,s,this.homeDir)),await this.writeCodexGatewayProviderConfig(e),!this.agentConfig.isDirectMode&&this.registry.spendTrackingJsonConfig&&await Kt(e,this.agentConfig.type,this.registry.spendTrackingJsonConfig.headersPath,{[H]:this.sessionTag,...this.providerRuntimeHeaderUpdates()},this.homeDir),this.skills?.length&&await this.setupSkills(e);}async writeNativeAgentConfig(e){let n=this.effectiveNativeConfigDocument();if(!n)return;let r=this.registry.nativeConfig;if(!r)throw new Error(`Agent "${this.agentConfig.type}" has a config but no nativeConfig registry knowledge`);let s=N(r.path,this.homeDir),a=s.substring(0,s.lastIndexOf("/")),d=r.format==="toml"?smolToml.stringify(n):JSON.stringify(n,null,2);await e.commands.run(`mkdir -p ${a}`,{timeoutMs:3e4}),await e.files.write(s,d),await e.commands.run(`chmod 600 ${s}`,{timeoutMs:3e4});}effectiveNativeConfigDocument(){let e=this.agentConfig.config,n=this.agentConfig.preset,r=n?this.registry.presets?.[n]?.configStamp:void 0;return r?ln(e??{},r):e}presetCommandFlags(){let e=this.agentConfig.preset;return e?this.registry.presets?.[e]?.commandFlags:void 0}nativeConfigFlagPath(){let e=this.registry.nativeConfig;if(!(!e||e.delivery!=="settings-flag"||!this.effectiveNativeConfigDocument()))return N(e.path,this.homeDir)}async setupSkills(e){if(!this.skills?.length)return;let{skillsConfig:n}=this.registry,r=N(n.targetDir,this.homeDir),s=await Ir(this.skills);this.resolvedSkillsList=s,await Or(e,s,r);}resolvedSkills(){return this.resolvedSkillsList??[]}async uploadContextFiles(e,n){let r=Object.entries(n).map(([a,d])=>({path:`${this.workingDir}/context/${a}`,data:d}));if(r.length===0)return;let s=new Set(r.map(a=>a.path.substring(0,a.path.lastIndexOf("/"))).filter(Boolean));s.size>0&&await e.commands.run(`mkdir -p ${Array.from(s).join(" ")}`,{timeoutMs:3e4}),await e.files.writeBatch(r);}async uploadWorkspaceFiles(e,n){let r=Object.entries(n).map(([a,d])=>({path:a.startsWith("/")?a:`${this.workingDir}/${a}`,data:d}));if(r.length===0)return;let s=new Set(r.map(a=>a.path.substring(0,a.path.lastIndexOf("/"))).filter(Boolean));s.size>0&&await e.commands.run(`mkdir -p ${Array.from(s).join(" ")}`,{timeoutMs:3e4}),await e.files.writeBatch(r);}buildCommand(e,n){return this.registry.buildCommand({prompt:this.agentConfig.type==="droid"?e:jp(e),model:this.resolveCommandModel(this.agentConfig.model||this.registry.defaultModel),isResume:n??this.hasRun,sessionId:this.agentConfig.type==="droid"?this.droidSessionId:void 0,reasoningEffort:this.reasoningEffort(),nativeConfigPath:this.nativeConfigFlagPath(),presetFlags:this.presetCommandFlags(),isDirectMode:this.agentConfig.isDirectMode,isExternalGateway:!!this.agentConfig.externalGateway,skills:this.skills,homeDir:this.homeDir})}async writeKimiPerRunConfig(e,n){if(this.agentConfig.isDirectMode||!this.registry.spendTrackingTomlProvider)return;let r=this.requireActiveProviderRuntimeToken();await ir(e,{...this.registry.spendTrackingTomlProvider,maxContextSize:this.resolveKimiMaxContextSize()},{[H]:this.sessionTag,[re]:`${he}${n}`,...this.providerRuntimeHeaderUpdates()},{baseUrl:Fn(r?.baseUrl??Y(this.registry.gatewayPath)),apiKey:r?.token??this.agentConfig.apiKey,model:this.resolveCommandModel(this.agentConfig.model||this.registry.defaultModel),defaultThinking:et(this.reasoningEffort()),thinkingEffort:_l(this.reasoningEffort())},this.homeDir);}async run(e,n){if(this.credentialsSealed)throw new Error("Agent credentials are sealed; this Evolve instance cannot run the agent again");Ur(e);let{prompt:r,timeoutMs:s=Xe,background:a=false,checkpointComment:d,resume:u}=e,{from:c}=e;if(this.activeCommand)throw new Error("Agent is already running. Call interrupt(), wait for the active/background run to finish, or create a new Evolve instance.");if(await this.ensureOrgResolved(),c&&(this.sandbox||this.options.sandboxId))throw new Error("Cannot restore into existing sandbox. Call kill() first, or create a new Evolve instance.");if(c==="latest"){if(!this.storage)throw new Error('Storage not configured. Call .withStorage() before using from: "latest".');let v=await ts(this.storage);if(!v)throw new Error('No checkpoints found for from: "latest".');c=v.id;}if(c){if(!this.storage)throw new Error("Storage not configured. Call .withStorage() before using 'from'.");if(!this.options.sandboxProvider)throw new Error("No sandbox provider configured");await this.ensureManagedBrowserSession(n),await this.ensureProviderRuntimeToken(),await this.ensureManagedSecretRuntimeToken();let v=this.buildEnvironmentVariables();this.sandboxState="booting",this.emitLifecycle(n,"sandbox_boot");try{this.sandbox=await this.options.sandboxProvider.create(this.buildSandboxCreateOptions(v)),await this.bindProviderRuntimeToken(this.sandbox.sandboxId),await this.bindManagedSecretRuntimeToken(this.sandbox.sandboxId),await this.setupManagedSecretEgress(this.sandbox);let x=await Oo(this.sandbox,this.storage,c);if(await this.setupManagedBrowser(this.sandbox),x.agentType&&x.agentType!==this.agentConfig.type)throw new Error(`Cannot restore checkpoint: agent type mismatch (checkpoint: ${x.agentType}, current: ${this.agentConfig.type})`);let R=this.options.workspaceMode||"knowledge";if(x.workspaceMode&&x.workspaceMode!==R)throw new Error(`Cannot restore checkpoint: workspace mode mismatch (checkpoint: ${x.workspaceMode}, current: ${R})`);await this.setupAgentAuth(this.sandbox),await this.setupAgentPlugins(this.sandbox);let I=!!(this.options.systemPrompt||this.options.browserPrompt||this.zodSchema||this.jsonSchema);await this.setupWorkspace(this.sandbox,{skipSystemPrompt:!I}),await this.loadDroidSessionState(this.sandbox),this.hasRun=!0,this.lastCheckpointId=c,this.sandboxState="ready",this.agentState="idle",this.emitLifecycle(n,"sandbox_ready");}catch(x){throw this.sandbox&&(await this.sandbox.kill().catch(()=>{}),this.sandbox=void 0),await this.closeManagedBrowserSession().catch(()=>{}),await this.closeProviderRuntimeToken().catch(()=>{}),await this.closeManagedSecretRuntimeToken().catch(()=>{}),this.sandboxState="error",this.agentState="error",this.emitLifecycle(n,"sandbox_error"),x}}let i=await this.getSandbox(n);await this.ensureProviderRuntimeToken(),await this.loadDroidSessionState(i),this.lastRunTimestamp=Date.now(),this.ensureSessionLogger(i),this.sessionLogger?.writePrompt(r),this.requiresPreRunDashboardIngest()&&await this.flushSessionLoggerWithTimeout();let o=this.buildCommand(r,u),l=crypto.randomUUID(),p=this.buildRunEnvs(l);if(await this.writeCodexGatewayProviderConfig(i),!this.agentConfig.isDirectMode&&this.registry.spendTrackingJsonConfig&&await Kt(i,this.agentConfig.type,this.registry.spendTrackingJsonConfig.headersPath,{[H]:this.sessionTag,[re]:`${he}${l}`,...this.providerRuntimeHeaderUpdates()},this.homeDir),this.agentConfig.type==="qwen"&&await Zn(i,et(this.reasoningEffort()),this.homeDir),await this.writeKimiPerRunConfig(i,l),(!this.agentConfig.isDirectMode||this.agentConfig.externalGateway)&&this.registry.droidGatewaySettings){let v=!!this.agentConfig.externalGateway,x=v?void 0:this.requireActiveProviderRuntimeToken();await Gt(i,{...this.registry.droidGatewaySettings,model:this.droidSettingsModel(),baseUrl:v?this.agentConfig.baseUrl??Y():Fn(x?.baseUrl??Y()),apiKeyEnv:this.registry.apiKeyEnv},v?{}:{[H]:this.sessionTag,[re]:`${he}${l}`,...this.providerRuntimeHeaderUpdates()},this.homeDir);}let g="",m=ye(this.agentConfig.type),h=v=>{g+=v;let x=g.split(`
661
- `);g=x.pop()??"";for(let R of x){if(!R.trim())continue;let I=m(R);if(this.captureDroidSession(R,I),this.sessionLogger?.writeEventParsed(R,I),n?.onStdout?.(R+`
662
- `),I&&n?.onContent)for(let E of I)n.onContent(E);}},f=v=>{n?.onStderr?.(v);},y=await i.commands.spawn(o,{cwd:this.workingDir,timeoutMs:s,envs:p,onStdout:h,onStderr:f}),b=this.beginOperation("run",y,n,"run_start");if(this.hasRun=true,a)return this.watchBackgroundOperation(b,"run",y,n,i),{sandboxId:i.sandboxId,sessionId:this.managedBrowserSession?.sessionId,browser:this.browserResponseInfo(),runId:l,exitCode:0,stdout:`Background process started with ID ${y.processId}`,stderr:""};let _;try{_=await y.wait();}catch(v){throw this.interruptedOperations.delete(b),this.finalizeOperation(b,n,"run_failed","error"),v}if(this.interruptedOperations.delete(b)||_.exitCode===130?this.finalizeOperation(b,n,"run_interrupted","interrupted"):_.exitCode===0?this.finalizeOperation(b,n,"run_complete","idle"):this.finalizeOperation(b,n,"run_failed","error"),g.trim()){let v=m(g);if(this.captureDroidSession(g,v),this.sessionLogger?.writeEventParsed(g,v),n?.onStdout?.(g+`
663
- `),v&&n?.onContent)for(let x of v)n.onContent(x);}await this.writeDroidSessionState(i),this.sessionLogger&&!a&&await this.flushSessionLoggerWithTimeout();let S;if(this.storage&&!a&&_.exitCode===0)try{S=await es(i,this.storage,this.agentConfig.type,this.workingDir,{tag:this.sessionTag,model:this.agentConfig.model||this.registry.defaultModel,workspaceMode:this.options.workspaceMode||"knowledge",comment:d,parentId:this.lastCheckpointId}),this.lastCheckpointId=S.id;}catch(v){console.warn(`[Evolve] Auto-checkpoint failed: ${v.message}`);}return {sandboxId:i.sandboxId,sessionId:this.managedBrowserSession?.sessionId,browser:this.browserResponseInfo(),runId:l,exitCode:_.exitCode,stdout:_.stdout,stderr:_.stderr,checkpoint:S}}async executeCommand(e,n={},r){let{timeoutMs:s=Xe,background:a=false}=n;if(this.activeCommand)throw new Error("Agent is already running. Call interrupt(), wait for the active/background command to finish, or create a new Evolve instance.");let d=await this.getSandbox(r);this.credentialsSealed||await this.ensureProviderRuntimeToken(),this.lastRunTimestamp=Date.now(),this.requiresPreRunDashboardIngest()&&(this.ensureSessionLogger(d),this.sessionLogger?.writePrompt(e),await this.flushSessionLoggerWithTimeout());let u="",c="",i=f=>{u+=f,r?.onStdout?.(f);},o=f=>{c+=f,r?.onStderr?.(f);},l=this.credentialsSealed?{}:this.buildProviderRuntimeProcessEnvs(),p=await d.commands.spawn(e,{cwd:this.workingDir,timeoutMs:s,envs:Object.keys(l).length>0?l:void 0,onStdout:i,onStderr:o}),g=this.beginOperation("command",p,r,"command_start");if(a)return this.watchBackgroundOperation(g,"command",p,r),{sandboxId:d.sandboxId,sessionId:this.managedBrowserSession?.sessionId,browser:this.browserResponseInfo(),exitCode:0,stdout:`Background process started with ID ${p.processId}`,stderr:""};let m;try{m=await p.wait();}catch(f){throw this.interruptedOperations.delete(g),this.finalizeOperation(g,r,"command_failed","error"),f}return this.interruptedOperations.delete(g)||m.exitCode===130?this.finalizeOperation(g,r,"command_interrupted","interrupted"):m.exitCode===0?this.finalizeOperation(g,r,"command_complete","idle"):this.finalizeOperation(g,r,"command_failed","error"),{sandboxId:d.sandboxId,sessionId:this.managedBrowserSession?.sessionId,browser:this.browserResponseInfo(),exitCode:m.exitCode,stdout:u||m.stdout||"",stderr:c||m.stderr||""}}async sealCredentials(){if(this.credentialsSealed)return;if(!this.sandbox)throw new Error("No active sandbox. Call run() or executeCommand() first.");if(this.activeCommand)throw new Error("Cannot seal credentials while a process is running.");if(this.agentConfig.isDirectMode&&!this.agentConfig.externalGateway)throw new Error("Credential sealing requires gateway mode; direct provider credentials cannot be revoked by Evolve");if([this.options.secrets&&Object.keys(this.options.secrets).length>0,this.options.sandboxCreateOptions?.envs&&Object.keys(this.options.sandboxCreateOptions.envs).length>0,this.options.managedSecrets,this.options.integrations,this.options.mcpServers&&Object.keys(this.options.mcpServers).length>0,this.options.managedBrowser,this.options.browserCredentials].some(Boolean))throw new Error("Credential sealing requires a credential-minimal sandbox: omit secrets, managed secrets, integrations, MCP servers, and browser credentials");if(this.agentConfig.externalGateway){await this.agentConfig.externalGateway.revoke(),this.credentialsSealed=true;return}if(!this.providerRuntimeToken||!this.options.providerRouting)throw new Error("Cannot seal credentials: no active provider runtime token to revoke. Without a gateway-issued runtime token the sandbox may hold credentials Evolve cannot revoke, so sealing would be a false guarantee.");await this.closeProviderRuntimeToken(true),this.credentialsSealed=true;}isSealed(){return this.credentialsSealed}async collectArtifacts(e){if(!this.credentialsSealed)throw new Error("Call sealCredentials() before collecting artifacts.");if(!this.sandbox)throw new Error("No active sandbox.");if(this.activeCommand)throw new Error("Cannot collect artifacts while a process is running.");return yl(this.sandbox,this.workingDir,e)}async uploadContext(e){let n=await this.getSandbox();await this.uploadContextFiles(n,e);}async uploadFiles(e){let n=await this.getSandbox();await this.uploadWorkspaceFiles(n,e);}async uploadFileFromPath(e,n){let r=await this.getSandbox(),s=e.startsWith("/")?e:`${this.workingDir}/${e}`,a=s.substring(0,s.lastIndexOf("/"));if(a&&await r.commands.run(`mkdir -p ${a}`,{timeoutMs:3e4}),r.files.writeFromPath){await r.files.writeFromPath(s,n);return}let{readFile:d}=await import('fs/promises');await r.files.write(s,await d(n));}async getOutputFiles(e=false){let n=await this.getSandbox(),r=`${this.workingDir}/output`,s=e?"":"-maxdepth 1",d=(await n.commands.run(`find ${r} ${s} -type f -exec stat -c '%n|%Z' {} \\; 2>/dev/null || true`,{timeoutMs:3e4})).stdout.split(`
664
- `).filter(Boolean),u=this.lastRunTimestamp?Math.floor(this.lastRunTimestamp/1e3)-2:0,c=[],i=`${r}/`;for(let m of d){let[h,f]=m.split("|");if(!h||!f)continue;let y=parseInt(f,10);u>0&&y<u||c.push(h);}let o={},l=await Promise.all(c.map(async m=>{try{let h=await n.files.read(m);return {relativePath:m.startsWith(i)?m.slice(i.length):m.split("/").pop()||m,content:h}}catch{return null}}));for(let m of l)m&&(o[m.relativePath]=m.content);if(!this.zodSchema&&!this.jsonSchema)return {files:o,data:null};let p=o["result.json"];if(!p)return {files:o,data:null,error:"Schema provided but agent did not create output/result.json"};let g=typeof p=="string"?p:new TextDecoder().decode(p);try{let m=JSON.parse(g);if(this.zodSchema){let h=this.zodSchema.safeParse(m);return h.success?{files:o,data:h.data}:{files:o,data:null,error:`Schema validation failed: ${h.error.message}`,rawData:g}}if(this.compiledValidator){if(this.compiledValidator(m))return {files:o,data:m};{let f=this.compiledValidator.errors?.map(y=>`${y.instancePath} ${y.message}`).join(", ")||"Unknown validation error";return {files:o,data:null,error:`Schema validation failed: ${f}`,rawData:g}}}return {files:o,data:null}}catch(m){return {files:o,data:null,error:`Failed to parse result.json: ${m.message}`,rawData:g}}}async checkpoint(e){if(!this.storage)throw new Error("Storage not configured. Call .withStorage().");if(!this.sandbox)throw new Error("No active sandbox. Call run() first.");let n=await es(this.sandbox,this.storage,this.agentConfig.type,this.workingDir,{tag:this.sessionTag,model:this.agentConfig.model||this.registry.defaultModel,workspaceMode:this.options.workspaceMode||"knowledge",comment:e?.comment,parentId:this.lastCheckpointId});return this.lastCheckpointId=n.id,n}getSession(){return this.sandbox?.sandboxId||this.options.sandboxId||null}async setSession(e){if(this.credentialsSealed)throw new Error("Agent credentials are sealed and this Evolve instance cannot switch sandboxes");if(this.options.managedSecrets)throw new Error("setSession() cannot be used with managed secrets; managed secret grants are sandbox-scoped.");if(this.options.sandboxCreateOptions?.user)throw new Error("setSession() cannot be used with a configured sandbox user; the user cannot be enforced on an existing sandbox.");if(this.activeCommand&&!await this.interrupt())throw new Error("Cannot switch session while an active process is running and could not be interrupted.");await this.rotateSession(),await this.closeProviderRuntimeToken(),await this.closeManagedSecretRuntimeToken(),await this.closeManagedBrowserSession(),this.options.sandboxId=e,this.sandbox=void 0,this.interruptedOperations.clear(),this.invalidateActiveOperation(),this.sandboxState="ready",this.agentState="idle",this.hasRun=true,this.lastCheckpointId=void 0;}async pause(e){this.sandbox&&(this.activeCommand&&await this.interrupt(e),await this.sandbox.pause(),this.sandboxState="paused",this.agentState="idle",this.emitLifecycle(e,"sandbox_pause"));}async resume(e){this.sandbox&&this.options.sandboxProvider&&(this.sandbox=await this.options.sandboxProvider.connect(this.sandbox.sandboxId),this.sandboxState="ready",this.agentState="idle",this.emitLifecycle(e,"sandbox_resume"));}async interrupt(e){if(!this.activeCommand&&!this.activeProcessId)return false;let n=this.activeOperationId,r=this.activeOperationKind,s=false;try{this.activeCommand?s=await this.activeCommand.kill():this.sandbox&&this.activeProcessId&&(s=await this.sandbox.commands.kill(this.activeProcessId));}catch{s=false;}if(!s)return this.sandboxState="running",this.agentState="running",false;n!==null&&this.interruptedOperations.add(n),this.invalidateActiveOperation(),this.sandboxState="ready",this.agentState="interrupted";let a=r==="run"?"run_interrupted":"command_interrupted";return this.emitLifecycle(e,a),s}status(){let e=this.browserRuntimeInfo();return {sandboxId:this.getSession(),sandbox:this.sandboxState,agent:this.agentState,activeProcessId:this.activeProcessId,hasRun:this.hasRun,timestamp:new Date().toISOString(),...e?{browser:e}:{}}}async kill(e){await this.rotateSession();let n;try{this.activeCommand&&await this.interrupt(e),this.sandbox&&(await this.sandbox.kill(),this.sandbox=void 0);}catch(r){n=r;}finally{await this.closeProviderRuntimeToken(),await this.closeManagedSecretRuntimeToken(),await this.closeManagedBrowserSession();}if(n)throw n;this.options.sandboxId=void 0,this.interruptedOperations.clear(),this.invalidateActiveOperation(),this.sandboxState="stopped",this.agentState="idle",this.hasRun=false,this.lastCheckpointId=void 0,this.emitLifecycle(e,"sandbox_killed");}async getHost(e){return (await this.getSandbox()).getHost(e)}getAgentType(){return this.agentConfig.type}getSessionTag(){return !this.sandbox&&!this.sessionLogger?null:this.sessionTag}getSessionTimestamp(){return this.sessionLogger?.getTimestamp()||null}async flushObservability(){await this.sessionLogger?.flush();}async rotateSession(){let e=!!this.sessionLogger;this.sessionLogger&&(await this.sessionLogger.close(),this.sessionLogger=void 0),e&&(this.previousSessionTag=this.sessionTag),this.sessionTag=bl(this.options.sessionTagPrefix||"evolve");}async fetchSpend(e){if(this.agentConfig.isDirectMode)throw new Error("Cost tracking requires gateway mode (set EVOLVE_API_KEY).");let n=this.agentConfig.apiKey;if(!n)throw new Error("Cost tracking requires an API key.");let r=process.env.EVOLVE_DASHBOARD_URL||T,s=await fetch(`${r}/api/sessions/spend?${e}`,{headers:{Authorization:`Bearer ${n}`},signal:AbortSignal.timeout(1e4)});if(!s.ok){let a=await s.text().catch(()=>"");throw new Error(`Spend query failed (${s.status}): ${a}`)}return s}resolveSpendTag(){if(this.sandbox||this.sessionLogger)return this.sessionTag;if(this.previousSessionTag)return this.previousSessionTag;throw new Error("No session to query. Call run() first.")}normalizeRunCost(e,n){return {...e,asOf:e.asOf??n.asOf,isComplete:e.isComplete??n.isComplete,truncated:e.truncated??n.truncated}}normalizeSessionCost(e){let n={asOf:e.asOf,isComplete:e.isComplete,truncated:e.truncated};return {...e,runs:e.runs.map(r=>this.normalizeRunCost(r,n))}}async getSessionCost(){let e=this.resolveSpendTag(),n=new URLSearchParams({tag:e}),s=await(await this.fetchSpend(n)).json();return this.normalizeSessionCost(s)}async getRunCost(e){let n=this.resolveSpendTag();if("runId"in e){let d=new URLSearchParams({tag:n,runId:e.runId}),c=await(await this.fetchSpend(d)).json();return this.normalizeRunCost(c,{asOf:new Date().toISOString(),isComplete:false,truncated:false})}let r=await this.getSessionCost(),s=e.index>0?e.index-1:r.runs.length+e.index,a=r.runs[s];if(!a)throw new Error(`Run index ${e.index} out of range. Session has ${r.runs.length} run(s).`);return a}};function Gp(t){return (t||process.env.EVOLVE_DASHBOARD_URL||T).replace(/\/$/,"")}function qp(t){let e=t||process.env.EVOLVE_API_KEY;if(!e)throw new Error("Browser profiles require EVOLVE_API_KEY or an explicit apiKey");return e}async function zp(t){return await t.text().catch(()=>"")}async function wl(t,e,n={}){let r=await fetch(`${Gp(t?.dashboardUrl)}${e}`,{...n,headers:{Authorization:`Bearer ${qp(t?.apiKey)}`,accept:"application/json",...n.body?{"content-type":"application/json"}:{},...n.headers||{}}});if(!r.ok)throw new Error(`Browser profiles request failed (${r.status}): ${await zp(r)}`);return r.status===204?{}:await r.json()}var Bn=class{constructor(e={}){this.config=e;}toMetadata(e){return {id:e.id,profile:e.profile,createdAt:e.createdAt||e.created_at||"",updatedAt:e.updatedAt||e.updated_at||"",lastUsedAt:e.lastUsedAt??e.last_used_at??null}}async list(){return {profiles:(await wl(this.config,"/api/browser-profiles")).profiles.map(n=>this.toMetadata(n))}}async delete(e){return await wl(this.config,"/api/browser-profiles",{method:"DELETE",body:JSON.stringify(e)})}};function Ls(t={}){return new Bn(t)}var Mt=class extends events.EventEmitter{config={};agent;fallbackSandboxState="stopped";fallbackAgentState="idle";fallbackHasRun=false;constructor(){super();}on(e,n){return super.on(e,n)}off(e,n){return super.off(e,n)}emit(e,...n){return super.emit(e,...n)}withAgent(e){return e&&(it(e),cn(e),this.config.agent=e,this._cachedGatewayOverrides=null),this}withSandbox(e){return this.config.sandbox=e,this}withSandboxCreateOptions(e){return this.config.sandboxCreateOptions={...e,envs:e.envs?{...e.envs}:void 0,metadata:e.metadata?{...e.metadata}:void 0},this}withWorkingDirectory(e){return this.config.workingDirectory=e,this}withWorkspaceMode(e){return this.config.workspaceMode=e,this}withSecrets(e){return this.config.secrets={...this.config.secrets,...e},this}withManagedSecrets(e){return this.config.managedSecrets=e,this}withSession(e){return this.config.sandboxId=e,this.agent||(this.fallbackSandboxState="ready",this.fallbackAgentState="idle",this.fallbackHasRun=true),this}withSystemPrompt(e){return this.config.systemPrompt=e,this}withContext(e){return this.config.context={...this.config.context,...e},this}withFiles(e){return this.config.files={...this.config.files,...e},this}withMcpServers(e){return this.config.mcpServers={...this.config.mcpServers,...e},this}withBrowser(e={provider:"agent-browser",remote:true}){return e===false?delete this.config.browser:this.config.browser=e,this}withBrowserCredentials(e={}){return this.config.browserCredentials=e,this}withPlugins(e){let n=Array.isArray(e)?e:[e];return this.config.plugins=[...this.config.plugins??[],...n],this}withSkills(e){return this.config.skills=e,this}withSchema(e,n){return this.config.schema=e,n&&(Q(e)?console.warn("[Evolve] schemaOptions ignored for Zod schemas - use .passthrough(), .strip(), z.coerce instead"):this.config.schemaOptions=n),this}withSessionTagPrefix(e){return this.config.sessionTagPrefix=e,this}withOrg(e){return this.config.org=e,this}withObservability(e){return this.config.observability={...this.config.observability,...e},this}withIntegrations(e){return this.config.integrations=e,this}withStorage(e){return this.config.storage=e||{},this}static integrations=mo;static browserCredentials=os;static browserProfiles=Ls;static managedSecrets=Os;async initializeAgent(){let e=dn(this.config.agent),n=V(e.type);if(this.config.integrations&&e.isDirectMode)throw new Error("withIntegrations() is available only in gateway mode with EVOLVE_API_KEY");if(this.config.managedSecrets&&e.isDirectMode)throw new Error("withManagedSecrets() is available only in gateway mode with EVOLVE_API_KEY");if(this.config.managedSecrets&&this.config.sandboxId)throw new Error("withManagedSecrets() cannot be used with withSession(); managed secret grants are sandbox-scoped.");let r=ul(this.config.managedSecrets,n);if(r&&this.config.sandbox&&!De(this.config.sandbox))throw new Error("withManagedSecrets() requires an Evolve-managed sandbox; remove withSandbox() or pass a managed sandbox provider.");let s=this.config.sandbox??(r?await at(e.apiKey):await gn()),a={},d,u,c=this.config.skills,i;if(this.config.browser){let p=zo(this.config.browser);if(i=p,p.provider==="browser-use"){if(e.isDirectMode)throw new Error('withBrowser("browser-use") requires gateway mode. Use apiKey/EVOLVE_API_KEY instead of providerApiKey/direct mode.');a=Vs(e.apiKey);}if((p.provider==="actionbook"||p.provider==="agent-browser")&&p.managed){if(e.isDirectMode)throw new Error(`Managed browser provider "${p.provider}" requires gateway mode. Use apiKey/EVOLVE_API_KEY instead of providerApiKey/direct mode.`);d=p.provider==="actionbook"?Jr:oo,u={provider:p.provider,apiKey:e.apiKey,dashboardUrl:process.env.EVOLVE_DASHBOARD_URL||T,...p.profile?{profile:p.profile}:{}};}if(p.profile&&!p.managed)throw new Error('withBrowser({ profile }) requires managed remote browser mode. Use .withBrowser({ profile }) or .withBrowser({ provider: "agent-browser", remote: true, profile }).')}if(this.config.browserCredentials!==void 0){if(this.config.sandboxId)throw new Error("withBrowserCredentials() cannot be used with withSession(); browser login tokens are run-scoped.");if(e.isDirectMode)throw new Error("withBrowserCredentials() requires gateway mode. Use apiKey/EVOLVE_API_KEY instead of providerApiKey/direct mode.");if(!i||i.provider!=="agent-browser"||!i.managed)throw new Error('withBrowserCredentials() requires .withBrowser() or .withBrowser({ provider: "agent-browser", remote: true }).');if(this.config.mcpServers?.["browser-login"])throw new Error('withBrowserCredentials() reserves the "browser-login" MCP server name.')}let o=this.config.storage!==void 0?hn(this.config.storage,!e.isDirectMode,T,e.isDirectMode?void 0:e.apiKey):void 0,l={sandboxProvider:s,sandboxCreateOptions:this.config.sandboxCreateOptions,secrets:this.config.secrets,managedSecrets:r?{secrets:r,apiKey:e.apiKey,dashboardUrl:process.env.EVOLVE_DASHBOARD_URL||T}:void 0,sandboxId:this.config.sandboxId,workingDirectory:this.config.workingDirectory,workspaceMode:this.config.workspaceMode,systemPrompt:this.config.systemPrompt,context:this.config.context,files:this.config.files,mcpServers:{...a,...this.config.mcpServers},browserPrompt:d,managedBrowser:u,browserCredentials:this.config.browserCredentials!==void 0?{apiKey:e.apiKey,dashboardUrl:process.env.EVOLVE_DASHBOARD_URL||T,config:this.config.browserCredentials}:void 0,plugins:this.config.plugins,skills:c,schema:this.config.schema,schemaOptions:this.config.schemaOptions,sessionTagPrefix:this.config.sessionTagPrefix,org:this.config.org,observability:this.config.observability,integrations:this.config.integrations?{...this.config.integrations,apiKey:e.apiKey,dashboardUrl:process.env.EVOLVE_DASHBOARD_URL||T}:void 0,providerRouting:e.isDirectMode?void 0:{apiKey:e.apiKey,dashboardUrl:process.env.EVOLVE_DASHBOARD_URL||T},storage:o};this.agent=new Ot(e,l);}createStreamCallbacks(){let e=this.listenerCount("stdout")>0,n=this.listenerCount("stderr")>0,r=this.listenerCount("content")>0,s=this.listenerCount("lifecycle")>0;return {onStdout:e?a=>this.emit("stdout",a):void 0,onStderr:n?a=>this.emit("stderr",a):void 0,onContent:r?a=>this.emit("content",a):void 0,onLifecycle:s?a=>this.emit("lifecycle",a):void 0}}emitLifecycleFromStatus(e){if(this.listenerCount("lifecycle")===0)return;let n=this.status();this.emit("lifecycle",{sandboxId:n.sandboxId,sandbox:n.sandbox,agent:n.agent,timestamp:new Date().toISOString(),reason:e,...n.browser?{browser:n.browser}:{}});}async run({prompt:e,timeoutMs:n,background:r,from:s,checkpointComment:a,resume:d}){if(s&&this.config.sandboxId)throw new Error("Cannot use 'from' with 'withSession()' \u2014 restore requires a fresh sandbox.");this.agent||await this.initializeAgent();let u=this.createStreamCallbacks();return this.agent.run({prompt:e,timeoutMs:n,background:r,from:s,checkpointComment:a,resume:d},u)}async executeCommand(e,n={}){this.agent||await this.initializeAgent();let r=this.createStreamCallbacks();return this.agent.executeCommand(e,n,r)}async prepareSandbox(){this.agent||await this.initializeAgent();let e=this.createStreamCallbacks();return (await this.agent.getSandbox(e)).sandboxId}async updateNetwork(e){if(!this.agent)throw new Error("No sandbox yet. Call prepareSandbox(), run() or executeCommand() before updateNetwork().");let n=await this.agent.getSandbox(this.createStreamCallbacks());if(typeof n.updateNetwork!="function")throw new Error(`The ${this.config.sandbox?.providerType??"configured"} sandbox provider cannot change network policy after start. Create the sandbox with the policy it needs for its whole lifetime, or use a provider that supports runtime changes.`);await n.updateNetwork(e);}async sealCredentials(){if(!this.agent)throw new Error("Agent not initialized. Call run() or executeCommand() first.");await this.agent.sealCredentials();}isSealed(){return this.agent?.isSealed()??false}resolvedSkills(){return this.agent?.resolvedSkills()??[]}async collectArtifacts(e){if(!this.agent)throw new Error("Agent not initialized. Call run() or executeCommand() first.");return this.agent.collectArtifacts(e)}async interrupt(){if(!this.agent)return false;let e=this.createStreamCallbacks();return this.agent.interrupt(e)}async uploadContext(e){return this.agent||await this.initializeAgent(),this.agent.uploadContext(e)}async uploadFiles(e){return this.agent||await this.initializeAgent(),this.agent.uploadFiles(e)}async uploadFileFromPath(e,n){return this.agent||await this.initializeAgent(),this.agent.uploadFileFromPath(e,n)}async getOutputFiles(e=false){if(!this.agent)throw new Error("Agent not initialized. Call run() first.");return this.agent.getOutputFiles(e)}async checkpoint(e){if(!this.agent)throw new Error("Agent not initialized. Call run() first.");return this.agent.checkpoint(e)}_cachedGatewayOverrides=null;resolveGatewayOverrides(){if(this._cachedGatewayOverrides!==null)return this._cachedGatewayOverrides||void 0;try{let e=dn(this.config.agent);if(!e.isDirectMode)return this._cachedGatewayOverrides={gatewayUrl:T,gatewayApiKey:e.apiKey},this._cachedGatewayOverrides}catch{}this._cachedGatewayOverrides=void 0;}async listCheckpoints(e){if(this.config.storage===void 0)throw new Error("Storage not configured. Call .withStorage().");return rs(this.config.storage,this.resolveGatewayOverrides()||{}).listCheckpoints(e)}storage(){if(this.config.storage===void 0)throw new Error("Storage not configured. Call .withStorage().");return rs(this.config.storage,this.resolveGatewayOverrides()||{})}getSession(){return this.agent?this.agent.getSession():this.config.sandboxId??null}async setSession(e){if(this.config.managedSecrets)throw new Error("setSession() cannot be used with withManagedSecrets(); managed secret grants are sandbox-scoped.");this.agent?await this.agent.setSession(e):(this.fallbackSandboxState="ready",this.fallbackAgentState="idle",this.fallbackHasRun=true),this.config.sandboxId=e;}status(){return this.agent?this.agent.status():{sandboxId:this.config.sandboxId??null,sandbox:this.fallbackSandboxState,agent:this.fallbackAgentState,activeProcessId:null,hasRun:this.fallbackHasRun,timestamp:new Date().toISOString()}}async pause(){if(this.agent){let e=this.createStreamCallbacks();await this.agent.pause(e);return}this.config.sandboxId&&this.config.sandbox&&(await(await this.config.sandbox.connect(this.config.sandboxId)).pause(),this.fallbackSandboxState="paused",this.fallbackAgentState="idle",this.emitLifecycleFromStatus("sandbox_pause"));}async resume(){if(this.agent){let e=this.createStreamCallbacks();await this.agent.resume(e);return}this.config.sandboxId&&this.config.sandbox&&(await this.config.sandbox.connect(this.config.sandboxId),this.fallbackSandboxState="ready",this.fallbackAgentState="idle",this.emitLifecycleFromStatus("sandbox_resume"));}async kill(){if(this.agent){let e=this.createStreamCallbacks();await this.agent.kill(e),this.config.sandboxId=void 0,this.fallbackSandboxState="stopped",this.fallbackAgentState="idle",this.fallbackHasRun=false;return}this.config.sandboxId&&this.config.sandbox&&(await(await this.config.sandbox.connect(this.config.sandboxId)).kill(),this.fallbackSandboxState="stopped",this.fallbackAgentState="idle",this.fallbackHasRun=false,this.emitLifecycleFromStatus("sandbox_killed"),this.config.sandboxId=void 0);}async getHost(e){return this.agent||await this.initializeAgent(),this.agent.getHost(e)}getSessionTag(){return this.agent?.getSessionTag()||null}getSessionTimestamp(){return this.agent?.getSessionTimestamp()||null}async flushObservability(){await this.agent?.flushObservability();}async getSessionCost(){if(!this.agent)throw new Error("No agent initialized. Call run() first.");return this.agent.getSessionCost()}async getRunCost(e){if(!this.agent)throw new Error("No agent initialized. Call run() first.");return this.agent.getRunCost(e)}};var ze=class{permits;queue=[];constructor(e){if(e<1)throw new Error("Semaphore max must be >= 1");this.permits=e;}async use(e){await this.acquire();try{return await e()}finally{this.release();}}acquire(){return this.permits>0?(this.permits--,Promise.resolve()):new Promise(e=>this.queue.push(e))}release(){this.queue.length>0?this.queue.shift()():this.permits++;}};var ke=Symbol.for("evolve.SwarmResult"),He=class t extends Array{get success(){return this.filter(e=>e.status==="success")}get filtered(){return this.filter(e=>e.status==="filtered")}get error(){return this.filter(e=>e.status==="error")}static from(e){let n=new t;return n.push(...e),n}};var $s=class t{config;semaphore;constructor(e={}){let n=e.concurrency??Gs;if(n>zn)throw new Error(`concurrency=${n} exceeds max ${zn}. For higher parallelism, scale horizontally with multiple processes.`);this.config={agent:e.agent,sandbox:e.sandbox,tag:e.tag??"swarm",concurrency:n,timeoutMs:e.timeoutMs??Xe,workspaceMode:e.workspaceMode??"knowledge",retry:e.retry,mcpServers:e.mcpServers,skills:e.skills,integrations:e.integrations},this.semaphore=new ze(this.config.concurrency);}async map(e){let{items:n,prompt:r,bestOf:s,verify:a}=e,d=e.retry??this.config.retry,u=this.generateOperationId(),c=e.timeoutMs??this.config.timeoutMs;if(s&&a)throw new Error("map() cannot use both bestOf and verify options simultaneously");let i=await Promise.all(n.map((o,l)=>s?this.executeMapItemWithBestOf(o,r,l,u,e,c,d):a?this.executeMapItemWithVerify(o,r,l,u,e,c,d):d?G(p=>this.executeMapItem(o,r,l,u,e,c,p),d,l):this.executeMapItem(o,r,l,u,e,c)));return He.from(i)}async filter(e){let{items:n,prompt:r,condition:s,verify:a}=e,d=e.retry??this.config.retry,u=this.generateOperationId(),c=e.timeoutMs??this.config.timeoutMs,i=await Promise.all(n.map((l,p)=>a?this.executeFilterItemWithVerify(l,r,p,u,e,c,d):d?G(g=>this.executeFilterItem(l,r,p,u,e,c,g),d,p):this.executeFilterItem(l,r,p,u,e,c))),o=[];for(let l of i)if(l.status==="error")o.push(l);else if(l.data!==null)try{s(l.data)?o.push(l):o.push({...l,status:"filtered"});}catch(p){o.push({...l,status:"error",data:null,error:`Condition function threw: ${p.message}`});}return He.from(o)}async reduce(e){let{items:n,prompt:r,verify:s}=e,a=e.retry??this.config.retry,d=this.generateOperationId(),u=e.timeoutMs??this.config.timeoutMs,c=[],i=[];n.forEach((w,S)=>{c.push(this.getFiles(w)),i.push(this.getIndex(w,S));});let o={};c.forEach((w,S)=>{Object.entries(w).forEach(([v,x])=>{o[`item_${i[S]}/${v}`]=x;});});let l=mn(o),p=de(co,{fileTree:l}),g=e.systemPrompt?`${p}
665
+ PY`,{timeoutMs:1e4})).exitCode!==0)throw new Error("Managed secret egress proxy failed to start");await e.commands.run(Bc(),{timeoutMs:5e3});}async closeManagedSecretRuntimeToken(){let e=this.managedSecretProxy;if(this.managedSecretProxy=void 0,e&&await e.kill().catch(()=>false),!this.managedSecretRuntimeToken||!this.options.managedSecrets)return;let n=this.managedSecretRuntimeToken,r;try{for(let s=0;s<3;s++)try{if(!await Dc({apiKey:this.options.managedSecrets.apiKey,dashboardUrl:this.options.managedSecrets.dashboardUrl},{token:n.token}))throw new Error("Dashboard returned ok=false");return}catch(o){r=o,s<2&&await new Promise(c=>setTimeout(c,100*(s+1)));}console.warn(`[Evolve] Managed secret runtime token cleanup failed: ${r.message}`);}finally{this.managedSecretRuntimeToken=void 0;}}buildGatewayConfigJson(e){let n=this.requireActiveProviderRuntimeToken(),r=this.agentConfig.externalGateway?this.agentConfig.baseUrl??Ie(W(this.registry.gatewayPath)):n?.baseUrl??Ie(W(this.registry.gatewayPath)),s=this.resolveCommandModel(this.agentConfig.model||this.registry.defaultModel),o={},c=this.options.secrets?.[this.registry.gatewayConfigEnv];if(c)try{o=JSON.parse(c);}catch{}let u=o.provider??{},l=u.litellm??{},i=l.options??{},a=l.models??{},d=a[s]??{},p=d.headers??{},g=this.agentConfig.type==="opencode"?Jr(this.reasoningEffort()):void 0,m=d.variants??{},f=g?m[g]??{}:void 0;return o.provider={...u,litellm:{...l,npm:"@ai-sdk/openai-compatible",options:{...i,baseURL:r,apiKey:n?.token??this.agentConfig.apiKey},models:{...a,[s]:{...d,name:s,headers:{...p,...e},...g?{variants:{...m,[g]:{...f,reasoningEffort:g}}}:{}}}}},JSON.stringify(o)}activeProviderRuntimeToken(){let e=en(this.agentConfig.type);return e&&this.providerRuntimeToken?.provider===e?this.providerRuntimeToken:void 0}requireActiveProviderRuntimeToken(){let e=en(this.agentConfig.type),n=this.activeProviderRuntimeToken();if(!this.agentConfig.isDirectMode&&e&&!n)throw new Error(`${this.agentConfig.type} gateway mode requires a Dashboard runtime token before sandbox setup`);return n}async ensureOrgResolved(){this.orgResolved||!this.options.org||this.agentConfig.isDirectMode||(await Cc(this.options.org,this.agentConfig.apiKey),this.orgResolved=true);}ensureSessionLogger(e){if(this.sessionLogger)return;let n=this.options.sandboxProvider;this.sessionLogger=new It({provider:n?.name||n?.providerType||"unknown",agent:this.agentConfig.type,model:this.agentConfig.model||this.registry.defaultModel,reasoningEffort:this.reasoningEffort(),sandboxId:e.sandboxId,tag:this.sessionTag,org:this.options.org,apiKey:this.agentConfig.isDirectMode?void 0:this.agentConfig.apiKey,observability:{...this.options.observability,...this.managedBrowserSession&&this.options.managedBrowser?{browser_provider:this.options.managedBrowser.provider,browser_session_id:this.managedBrowserSession.id,dashboard_session_id:this.managedBrowserSession.sessionId,browser_session_tag:this.managedBrowserSession.sessionTag,browser_live_url:this.managedBrowserSession.liveUrl}:{}}});}async flushSessionLoggerWithTimeout(e=2e3){this.sessionLogger&&await Promise.race([this.sessionLogger.flush(),new Promise(n=>setTimeout(n,e))]);}requiresPreRunDashboardIngest(){return !!(this.activeProviderRuntimeToken()||this.managedSecretRuntimeToken)}providerRuntimeHeaderUpdates(){let e=this.activeProviderRuntimeToken();return e?{[ur]:e.bindingSecret}:{}}shouldExposeProviderRuntimeTokenEnv(){return this.agentConfig.type!=="kimi"&&!this.registry.gatewayConfigEnv&&!this.credentialRidesProviderFile()}credentialRidesProviderFile(){return this.registry.zcodeProviderConfig!==void 0}buildProviderRuntimeProcessEnvs(){if(this.agentConfig.externalGateway){if(this.agentConfig.type==="kimi")return this.buildKimiDirectModelEnvs();let r=this.credentialRidesProviderFile()?{}:{[this.registry.apiKeyEnv]:this.agentConfig.apiKey};return this.registry.baseUrlEnv&&this.agentConfig.baseUrl&&(r[this.registry.baseUrlEnv]=this.agentConfig.baseUrl),this.registry.gatewayConfigEnv&&(r[this.registry.gatewayConfigEnv]=this.buildGatewayConfigJson({})),this.agentConfig.type==="gemini"&&(r.GEMINI_CLI_TRUST_WORKSPACE="true"),this.agentConfig.type==="antigravity"&&Object.assign(r,Li),r}let e=this.activeProviderRuntimeToken();if(!e)return {};let n={};if(this.shouldExposeProviderRuntimeTokenEnv()&&(n[this.registry.apiKeyEnv]=e.token),this.agentConfig.type==="gemini"&&(n.GEMINI_DEFAULT_AUTH_TYPE=$i),this.agentConfig.type==="antigravity"&&Object.assign(n,Li),this.registry.baseUrlEnv&&this.shouldExposeProviderRuntimeTokenEnv()&&(n[this.registry.baseUrlEnv]=e.baseUrl),this.registry.spendTrackingEnvs&&(n[Qt]=e.bindingSecret),this.registry.customHeadersEnv){let r=this.registry.customHeadersEnv,s=this.registry.customHeadersFormat||"newline";n[r]=Fi(this.options.secrets?.[r],this.providerRuntimeHeaderUpdates(),s);}return n}buildRunEnvs(e){if(this.agentConfig.externalGateway)return this.buildProviderRuntimeProcessEnvs();if(this.agentConfig.isDirectMode)return;let n=this.buildProviderRuntimeProcessEnvs(),r=this.registry.customHeadersEnv;if(r){let o=this.options.secrets?.[r],c=this.registry.customHeadersFormat||"newline";return n[r]=Fi(o,{[Y]:this.sessionTag,[ie]:`${_e}${e}`,...this.providerRuntimeHeaderUpdates()},c),n}let s=this.registry.spendTrackingEnvs;return s?{...n,[s.sessionTagEnv]:this.sessionTag,[s.runTagEnv]:`${_e}${e}`}:this.registry.gatewayConfigEnv?{...n,[this.registry.gatewayConfigEnv]:this.buildGatewayConfigJson({[Y]:this.sessionTag,[ie]:`${_e}${e}`,...this.providerRuntimeHeaderUpdates()})}:Object.keys(n).length>0?n:void 0}async writeCodexGatewayProviderConfig(e){if(this.agentConfig.type==="codex"){if(this.agentConfig.externalGateway){await Mn(e,this.agentConfig.baseUrl||W(),void 0,void 0,this.homeDir,this.homeOwner);return}this.agentConfig.isDirectMode||!this.registry.spendTrackingEnvs||await Mn(e,this.activeProviderRuntimeToken()?.baseUrl||this.agentConfig.baseUrl||W(),this.registry.spendTrackingEnvs,this.activeProviderRuntimeToken()?{[ur]:Qt}:void 0,this.homeDir,this.homeOwner);}}captureHarnessSessionId(e,n){if(!this.registry.sessionIdStateFile)return;let r=n?.find(o=>typeof o.sessionId=="string"&&o.sessionId.length>0)?.sessionId;if(r){this.capturedSessionId=r;return}let s=this.extractSessionIdFromLine(e);s&&(this.capturedSessionId=s);}extractSessionIdFromLine(e){try{return this.findSessionIdInLine(JSON.parse(e))}catch{return}}findSessionIdInLine(e){if(!e||typeof e!="object"||Array.isArray(e))return;let n=e,r=n.sessionId??n.session_id;return typeof r=="string"&&r.length>0?r:this.findSessionIdInLine(n.result)??this.findSessionIdInLine(n.params)??this.findSessionIdInLine(n.notification)}sessionIdStatePath(){let e=this.registry.sessionIdStateFile;return e?F(e,this.homeDir):void 0}async loadCapturedSessionId(e){let n=this.sessionIdStatePath();if(!(!n||this.capturedSessionId))try{let r=await e.files.read(n);if(typeof r!="string")return;let s=JSON.parse(r);typeof s.sessionId=="string"&&s.sessionId.length>0&&(this.capturedSessionId=s.sessionId);}catch{}}async writeCapturedSessionId(e){let n=this.sessionIdStatePath();!n||!this.capturedSessionId||await ne(e,n,JSON.stringify({sessionId:this.capturedSessionId},null,2),{homeDir:this.homeDir,owner:this.homeOwner});}dshPatchModel(){let e=this.agentConfig.model||this.registry.defaultModel;return this.agentConfig.externalGateway?Ge(this.registry,e):this.resolveCommandModel(e)}async writeDshPerRunPatch(e){let n=this.registry.dshRoutePatch;if(!n||!this.registry.baseUrlEnv)return;let r=!this.agentConfig.isDirectMode;r&&this.requireActiveProviderRuntimeToken();let s=this.registry.spendTrackingEnvs;await Un(e,{...n,apiKeyEnv:this.registry.apiKeyEnv,baseUrlEnv:this.registry.baseUrlEnv,model:this.dshPatchModel(),reasoningEffort:no(this.reasoningEffort()),headerEnvs:r&&s?{[Y]:s.sessionTagEnv,[ie]:s.runTagEnv,[ur]:Qt}:void 0},this.homeDir,this.homeOwner);}resolveCommandModel(e){return (this.agentConfig.isDirectMode?this.registry.directModelAliases:this.registry.gatewayModelAliases)?.[e]??e}async writePiFamilyModelsJson(e,n){let r=this.registry.modelsJsonRoute;if(!r)return;let s=!!this.agentConfig.externalGateway,o=this.agentConfig.isDirectMode&&!s,c,u={};if(s)c=this.agentConfig.baseUrl??Ie(W());else if(o){let i=this.agentConfig.baseUrl??this.registry.defaultBaseUrl;if(!i)throw new Error(`${this.agentConfig.type} direct mode needs a base URL (providerBaseUrl or the registry defaultBaseUrl)`);c=i;}else {let i=this.requireActiveProviderRuntimeToken();c=Ie(i?.baseUrl??W()),u={[Y]:this.sessionTag,[ie]:`${_e}${n}`,...this.providerRuntimeHeaderUpdates()};}let l=this.reasoningEffort();await Xr(e,{...r,apiKeyEnv:this.registry.apiKeyEnv,baseUrl:c,model:un(this.resolveCommandModel(this.agentConfig.model||this.registry.defaultModel),{isDirectMode:this.agentConfig.isDirectMode,isExternalGateway:s}),reasoning:Oe(l),thinkingLevel:dn(l)},u,this.homeDir,this.homeOwner);}droidSettingsModel(){let e=this.agentConfig.model||this.registry.defaultModel;return this.agentConfig.externalGateway?Ge(this.registry,e):this.resolveCommandModel(e)}async setupAgentAuth(e){if(this.agentConfig.oauthFileContent&&this.registry.oauthFileName){let n=F(this.registry.mcpConfig.settingsDir,this.homeDir);await e.files.makeDir(n),await e.files.write(`${n}/${this.registry.oauthFileName}`,this.agentConfig.oauthFileContent);return}this.agentConfig.type==="gemini"&&(!this.agentConfig.isDirectMode||this.agentConfig.externalGateway)&&await this.writeGeminiGatewayAuthSettings(e),await this.writeAntigravityRunSettings(e),this.registry.setupCommand&&await e.commands.run(this.registry.setupCommand,{timeoutMs:3e4});}async writeGeminiGatewayAuthSettings(e){let n=F(this.registry.mcpConfig.settingsDir,this.homeDir),r=`${n}/${this.registry.mcpConfig.filename}`;await e.files.makeDir(n);let s={};try{let u=await e.files.read(r);typeof u=="string"&&u.trim()&&(s=JSON.parse(u));}catch(u){let l=u.message||"";if(!/not found|no such file|does not exist/i.test(l))throw u}let o=typeof s.security=="object"&&s.security!==null?s.security:{},c=typeof o.auth=="object"&&o.auth!==null?o.auth:{};s.security={...o,auth:{...c,selectedType:$i}},await e.files.write(r,JSON.stringify(s,null,2));}async writeAntigravityRunSettings(e){let n=this.registry.antigravitySettings;if(!n)return;let r=this.resolveCommandModel(this.agentConfig.model||this.registry.defaultModel);await xn(e,n.settingsPath,Kr(r,{isExternalGateway:!!this.agentConfig.externalGateway}),this.homeDir,this.homeOwner);}async setupAgentPlugins(e){await dl(this.agentConfig.type,e,this.options.plugins);}assertProviderRuntimeDoesNotExposeGatewayKey(e){if(!this.activeProviderRuntimeToken())return;let n=this.agentConfig.apiKey;for(let[r,s]of Object.entries(e))for(let o of Object.values(s.headers||{}))if(o.includes(n))throw new Error(`MCP server "${r}" would expose the Evolve API key inside the sandbox. Use managed agent-browser or remove this gateway-authenticated MCP server.`)}async setupWorkspace(e,n){let r=this.options.workspaceMode||"knowledge";if(r!=="task"){let o=r==="swe"?`${this.workingDir}/repo ${this.workingDir}/context ${this.workingDir}/scripts ${this.workingDir}/temp ${this.workingDir}/output`:`${this.workingDir}/context ${this.workingDir}/scripts ${this.workingDir}/temp ${this.workingDir}/output`;if(await e.commands.run(`mkdir -p ${o}`,{timeoutMs:3e4}),!n?.skipSystemPrompt){let c=Ys({workingDir:this.workingDir,systemPrompt:this.options.systemPrompt,browserPrompt:this.options.browserPrompt,schema:this.zodSchema||this.jsonSchema,mode:r}),u=`${this.workingDir}/${this.registry.systemPromptFile}`;await e.files.write(u,c);}this.options.context&&await this.uploadContextFiles(e,this.options.context),this.options.files&&await this.uploadWorkspaceFiles(e,this.options.files);}let s={...this.options.mcpServers};if(this.options.integrations){let o=await $a({...this.options.integrations,sessionTag:this.sessionTag});s={...s,integrations:{type:"http",url:o.url,headers:o.headers}};}if(this.options.browserCredentials){if(!this.options.managedBrowser||this.options.managedBrowser.provider!=="agent-browser")throw new Error("Browser credentials require managed remote agent-browser.");if(!this.managedBrowserSession?.id||!this.managedBrowserSession.sessionTag||!this.managedBrowserSession.browserAuthGrantToken)throw new Error("Managed browser session is missing browser credential grant data.");let o=await kl({apiKey:this.options.browserCredentials.apiKey,dashboardUrl:this.options.browserCredentials.dashboardUrl,browserSessionId:this.managedBrowserSession.id,sessionTag:this.managedBrowserSession.sessionTag,grantToken:this.managedBrowserSession.browserAuthGrantToken,config:this.options.browserCredentials.config});s={...s,[ci]:o};}await this.writeNativeAgentConfig(e),Object.keys(s).length>0&&(this.assertProviderRuntimeDoesNotExposeGatewayKey(s),this.mcpConfigured=true,await rs(this.agentConfig.type,e,this.workingDir,s,this.homeDir)),this.registry.settingsStamp&&await Qr(e,this.registry.settingsStamp.path,this.registry.settingsStamp.document,this.homeDir),await this.writeCodexGatewayProviderConfig(e),!this.agentConfig.isDirectMode&&this.registry.spendTrackingJsonConfig&&await kn(e,this.agentConfig.type,this.registry.spendTrackingJsonConfig.headersPath,{[Y]:this.sessionTag,...this.providerRuntimeHeaderUpdates()},this.homeDir,this.homeOwner),this.skills?.length&&await this.setupSkills(e);}async writeNativeAgentConfig(e){let n=this.effectiveNativeConfigDocument();if(!n)return;let r=this.registry.nativeConfig;if(!r)throw new Error(`Agent "${this.agentConfig.type}" has a config but no nativeConfig registry knowledge`);let s=F(r.path,this.homeDir),o=s.substring(0,s.lastIndexOf("/")),c=r.format==="toml"?smolToml.stringify(n):JSON.stringify(n,null,2);await e.commands.run(`mkdir -p ${o}`,{timeoutMs:3e4}),await e.files.write(s,c),await e.commands.run(`chmod 600 ${s}`,{timeoutMs:3e4});}effectiveNativeConfigDocument(){let e=this.agentConfig.config,n=this.agentConfig.preset,r=n?this.registry.presets?.[n]?.configStamp:void 0;return r?gn(e??{},r):e}presetCommandFlags(){let e=this.agentConfig.preset;return e?this.registry.presets?.[e]?.commandFlags:void 0}nativeConfigFlagPath(){let e=this.registry.nativeConfig;if(!(!e||e.delivery!=="settings-flag"||!this.effectiveNativeConfigDocument()))return F(e.path,this.homeDir)}async setupSkills(e){if(!this.skills?.length)return;let{skillsConfig:n}=this.registry,r=F(n.targetDir,this.homeDir),s=await Ls(this.skills);this.resolvedSkillsList=s,await Fs(e,s,r);}resolvedSkills(){return this.resolvedSkillsList??[]}async uploadContextFiles(e,n){let r=Object.entries(n).map(([o,c])=>({path:`${this.workingDir}/context/${o}`,data:c}));if(r.length===0)return;let s=new Set(r.map(o=>o.path.substring(0,o.path.lastIndexOf("/"))).filter(Boolean));s.size>0&&await e.commands.run(`mkdir -p ${Array.from(s).join(" ")}`,{timeoutMs:3e4}),await e.files.writeBatch(r);}async uploadWorkspaceFiles(e,n){let r=Object.entries(n).map(([o,c])=>({path:o.startsWith("/")?o:`${this.workingDir}/${o}`,data:c}));if(r.length===0)return;let s=new Set(r.map(o=>o.path.substring(0,o.path.lastIndexOf("/"))).filter(Boolean));s.size>0&&await e.commands.run(`mkdir -p ${Array.from(s).join(" ")}`,{timeoutMs:3e4}),await e.files.writeBatch(r);}buildCommand(e,n){return this.registry.buildCommand({prompt:this.agentConfig.type==="droid"||this.agentConfig.type==="antigravity"?e:af(e),model:this.resolveCommandModel(this.agentConfig.model||this.registry.defaultModel),isResume:n??this.hasRun,mcpConfigured:this.mcpConfigured,sessionId:this.capturedSessionId,reasoningEffort:this.reasoningEffort(),nativeConfigPath:this.nativeConfigFlagPath(),presetFlags:this.presetCommandFlags(),isDirectMode:this.agentConfig.isDirectMode,isExternalGateway:!!this.agentConfig.externalGateway,skills:this.skills,homeDir:this.homeDir})}async writeKimiPerRunConfig(e,n){if(this.agentConfig.isDirectMode||!this.registry.spendTrackingTomlProvider)return;let r=this.requireActiveProviderRuntimeToken();await ns(e,{...this.registry.spendTrackingTomlProvider,maxContextSize:this.resolveKimiMaxContextSize()},{[Y]:this.sessionTag,[ie]:`${_e}${n}`,...this.providerRuntimeHeaderUpdates()},{baseUrl:Ie(r?.baseUrl??W(this.registry.gatewayPath)),apiKey:r?.token??this.agentConfig.apiKey,model:this.resolveCommandModel(this.agentConfig.model||this.registry.defaultModel),defaultThinking:Oe(this.reasoningEffort()),thinkingEffort:Kc(this.reasoningEffort())},this.homeDir,this.homeOwner);}async writeZcodePerRunConfig(e,n){let r=this.registry.zcodeProviderConfig;if(!r)return;let s=this.agentConfig.model||this.registry.defaultModel,o=ro(this.reasoningEffort()),c;if(this.agentConfig.externalGateway)c={baseUrl:this.agentConfig.baseUrl??Ie(W()),apiKey:this.agentConfig.apiKey,model:Ge(this.registry,s),headers:{}};else if(this.agentConfig.isDirectMode)c={baseUrl:this.agentConfig.baseUrl??this.registry.defaultBaseUrl??"",apiKey:this.agentConfig.apiKey,model:this.resolveCommandModel(s),headers:{}};else {let u=this.requireActiveProviderRuntimeToken();c={baseUrl:Ie(u?.baseUrl??W()),apiKey:u?.token??this.agentConfig.apiKey,model:this.resolveCommandModel(s),headers:{[Y]:this.sessionTag,[ie]:`${_e}${n}`,...this.providerRuntimeHeaderUpdates()}};}await Tn(e,{...r,...c,reasoningLevel:o},this.homeDir,this.homeOwner);}async removeZcodePerRunConfig(e){let n=this.registry.zcodeProviderConfig;if(n)try{await e.commands.run(`rm -f ${J(F(n.path,this.homeDir))}`,{timeoutMs:1e4});}catch{}}async run(e,n){if(this.credentialsSealed)throw new Error("Agent credentials are sealed; this Evolve instance cannot run the agent again");Hr(e);let{prompt:r,timeoutMs:s=_t,background:o=false,checkpointComment:c,resume:u}=e,{from:l}=e;if(this.activeCommand)throw new Error("Agent is already running. Call interrupt(), wait for the active/background run to finish, or create a new Evolve instance.");if(await this.ensureOrgResolved(),l&&(this.sandbox||this.options.sandboxId))throw new Error("Cannot restore into existing sandbox. Call kill() first, or create a new Evolve instance.");if(l==="latest"){if(!this.storage)throw new Error('Storage not configured. Call .withStorage() before using from: "latest".');let v=await ii(this.storage);if(!v)throw new Error('No checkpoints found for from: "latest".');l=v.id;}if(l){if(!this.storage)throw new Error("Storage not configured. Call .withStorage() before using 'from'.");if(!this.options.sandboxProvider)throw new Error("No sandbox provider configured");await this.ensureManagedBrowserSession(n),await this.ensureProviderRuntimeToken(),await this.ensureManagedSecretRuntimeToken();let v=this.buildEnvironmentVariables();this.sandboxState="booting",this.emitLifecycle(n,"sandbox_boot");try{this.sandbox=await this.options.sandboxProvider.create(this.buildSandboxCreateOptions(v)),await this.bindProviderRuntimeToken(this.sandbox.sandboxId),await this.bindManagedSecretRuntimeToken(this.sandbox.sandboxId),await this.setupManagedSecretEgress(this.sandbox);let E=await tl(this.sandbox,this.storage,l);if(await this.setupManagedBrowser(this.sandbox),E.agentType&&E.agentType!==this.agentConfig.type)throw new Error(`Cannot restore checkpoint: agent type mismatch (checkpoint: ${E.agentType}, current: ${this.agentConfig.type})`);let C=this.options.workspaceMode||"knowledge";if(E.workspaceMode&&E.workspaceMode!==C)throw new Error(`Cannot restore checkpoint: workspace mode mismatch (checkpoint: ${E.workspaceMode}, current: ${C})`);await this.setupAgentAuth(this.sandbox),await this.setupAgentPlugins(this.sandbox);let P=!!(this.options.systemPrompt||this.options.browserPrompt||this.zodSchema||this.jsonSchema);await this.setupWorkspace(this.sandbox,{skipSystemPrompt:!P}),await this.loadCapturedSessionId(this.sandbox),this.hasRun=!0,this.lastCheckpointId=l,this.sandboxState="ready",this.agentState="idle",this.emitLifecycle(n,"sandbox_ready");}catch(E){throw this.sandbox&&(await this.sandbox.kill().catch(()=>{}),this.sandbox=void 0),await this.closeManagedBrowserSession().catch(()=>{}),await this.closeProviderRuntimeToken().catch(()=>{}),await this.closeManagedSecretRuntimeToken().catch(()=>{}),this.sandboxState="error",this.agentState="error",this.emitLifecycle(n,"sandbox_error"),E}}let i=await this.getSandbox(n);await this.ensureProviderRuntimeToken(),await this.loadCapturedSessionId(i),this.lastRunTimestamp=Date.now(),this.ensureSessionLogger(i),this.sessionLogger?.writePrompt(r),this.requiresPreRunDashboardIngest()&&await this.flushSessionLoggerWithTimeout();let a=this.buildCommand(r,u),d=crypto.randomUUID(),p=this.buildRunEnvs(d);if(await this.writeCodexGatewayProviderConfig(i),!this.agentConfig.isDirectMode&&this.registry.spendTrackingJsonConfig&&await kn(i,this.agentConfig.type,this.registry.spendTrackingJsonConfig.headersPath,{[Y]:this.sessionTag,[ie]:`${_e}${d}`,...this.providerRuntimeHeaderUpdates()},this.homeDir,this.homeOwner),this.agentConfig.type==="qwen"&&await Zr(i,Oe(this.reasoningEffort()),this.homeDir,this.homeOwner),await this.writeKimiPerRunConfig(i,d),await this.writeDshPerRunPatch(i),await this.writeAntigravityRunSettings(i),(!this.agentConfig.isDirectMode||this.agentConfig.externalGateway)&&this.registry.droidGatewaySettings){let v=!!this.agentConfig.externalGateway,E=v?void 0:this.requireActiveProviderRuntimeToken();await Cn(i,{...this.registry.droidGatewaySettings,model:this.droidSettingsModel(),baseUrl:v?this.agentConfig.baseUrl??W():Ie(E?.baseUrl??W()),apiKeyEnv:this.registry.apiKeyEnv},v?{}:{[Y]:this.sessionTag,[ie]:`${_e}${d}`,...this.providerRuntimeHeaderUpdates()},this.homeDir,this.homeOwner);}await this.writePiFamilyModelsJson(i,d),await this.writeZcodePerRunConfig(i,d);let g="",m=false,f=Ue(this.agentConfig.type),h=v=>{g+=v;let E=g.split(`
666
+ `);g=E.pop()??"";for(let C of E){if(!C.trim())continue;let P=f(C);if(m=Vc(P,m),this.captureHarnessSessionId(C,P),this.sessionLogger?.writeEventParsed(C,P),n?.onStdout?.(C+`
667
+ `),P&&n?.onContent)for(let N of P)n.onContent(N);}},b=v=>{n?.onStderr?.(v);},_=await i.commands.spawn(a,{cwd:this.workingDir,timeoutMs:s,envs:p,onStdout:h,onStderr:b}),w=this.beginOperation("run",_,n,"run_start");if(this.hasRun=true,o)return this.watchBackgroundOperation(w,"run",_,n,i,()=>this.registry.verdictFromStream===true&&m),{sandboxId:i.sandboxId,sessionId:this.managedBrowserSession?.sessionId,browser:this.browserResponseInfo(),runId:d,exitCode:0,stdout:`Background process started with ID ${_.processId}`,stderr:""};let y;try{y=await _.wait();}catch(v){throw this.interruptedOperations.delete(w),this.finalizeOperation(w,n,"run_failed","error"),await this.removeZcodePerRunConfig(i),v}if(g.trim()){let v=f(g);if(m=Vc(v,m),this.captureHarnessSessionId(g,v),this.sessionLogger?.writeEventParsed(g,v),n?.onStdout?.(g+`
668
+ `),v&&n?.onContent)for(let E of v)n.onContent(E);}let k=y.exitCode===0&&!(this.registry.verdictFromStream&&m);this.interruptedOperations.delete(w)||y.exitCode===130?this.finalizeOperation(w,n,"run_interrupted","interrupted"):k?this.finalizeOperation(w,n,"run_complete","idle"):this.finalizeOperation(w,n,"run_failed","error"),await this.removeZcodePerRunConfig(i),await this.writeCapturedSessionId(i),this.sessionLogger&&!o&&await this.flushSessionLoggerWithTimeout();let S;if(this.storage&&!o&&k)try{S=await si(i,this.storage,this.agentConfig.type,this.workingDir,{tag:this.sessionTag,model:this.agentConfig.model||this.registry.defaultModel,workspaceMode:this.options.workspaceMode||"knowledge",comment:c,parentId:this.lastCheckpointId}),this.lastCheckpointId=S.id;}catch(v){console.warn(`[Evolve] Auto-checkpoint failed: ${v.message}`);}return {sandboxId:i.sandboxId,sessionId:this.managedBrowserSession?.sessionId,browser:this.browserResponseInfo(),runId:d,exitCode:y.exitCode,stdout:y.stdout,stderr:y.stderr,checkpoint:S}}async executeCommand(e,n={},r){let{timeoutMs:s=_t,background:o=false}=n;if(this.activeCommand)throw new Error("Agent is already running. Call interrupt(), wait for the active/background command to finish, or create a new Evolve instance.");let c=await this.getSandbox(r);this.credentialsSealed||await this.ensureProviderRuntimeToken(),this.lastRunTimestamp=Date.now(),this.requiresPreRunDashboardIngest()&&(this.ensureSessionLogger(c),this.sessionLogger?.writePrompt(e),await this.flushSessionLoggerWithTimeout());let u="",l="",i=h=>{u+=h,r?.onStdout?.(h);},a=h=>{l+=h,r?.onStderr?.(h);},d=this.credentialsSealed?{}:this.buildProviderRuntimeProcessEnvs(),p=await c.commands.spawn(e,{cwd:this.workingDir,timeoutMs:s,envs:Object.keys(d).length>0?d:void 0,onStdout:i,onStderr:a}),g=this.beginOperation("command",p,r,"command_start");if(o)return this.watchBackgroundOperation(g,"command",p,r),{sandboxId:c.sandboxId,sessionId:this.managedBrowserSession?.sessionId,browser:this.browserResponseInfo(),exitCode:0,stdout:`Background process started with ID ${p.processId}`,stderr:""};let m;try{m=await p.wait();}catch(h){throw this.interruptedOperations.delete(g),this.finalizeOperation(g,r,"command_failed","error"),h}return this.interruptedOperations.delete(g)||m.exitCode===130?this.finalizeOperation(g,r,"command_interrupted","interrupted"):m.exitCode===0?this.finalizeOperation(g,r,"command_complete","idle"):this.finalizeOperation(g,r,"command_failed","error"),{sandboxId:c.sandboxId,sessionId:this.managedBrowserSession?.sessionId,browser:this.browserResponseInfo(),exitCode:m.exitCode,stdout:u||m.stdout||"",stderr:l||m.stderr||""}}async sealCredentials(){if(this.credentialsSealed)return;if(!this.sandbox)throw new Error("No active sandbox. Call run() or executeCommand() first.");if(this.activeCommand)throw new Error("Cannot seal credentials while a process is running.");if(this.agentConfig.isDirectMode&&!this.agentConfig.externalGateway)throw new Error("Credential sealing requires gateway mode; direct provider credentials cannot be revoked by Evolve");if([this.options.secrets&&Object.keys(this.options.secrets).length>0,this.options.sandboxCreateOptions?.envs&&Object.keys(this.options.sandboxCreateOptions.envs).length>0,this.options.managedSecrets,this.options.integrations,this.options.mcpServers&&Object.keys(this.options.mcpServers).length>0,this.options.managedBrowser,this.options.browserCredentials].some(Boolean))throw new Error("Credential sealing requires a credential-minimal sandbox: omit secrets, managed secrets, integrations, MCP servers, and browser credentials");if(this.agentConfig.externalGateway){await this.agentConfig.externalGateway.revoke(),this.credentialsSealed=true;return}if(!this.providerRuntimeToken||!this.options.providerRouting)throw new Error("Cannot seal credentials: no active provider runtime token to revoke. Without a gateway-issued runtime token the sandbox may hold credentials Evolve cannot revoke, so sealing would be a false guarantee.");await this.closeProviderRuntimeToken(true),this.credentialsSealed=true;}isSealed(){return this.credentialsSealed}async collectArtifacts(e){if(!this.credentialsSealed)throw new Error("Call sealCredentials() before collecting artifacts.");if(!this.sandbox)throw new Error("No active sandbox.");if(this.activeCommand)throw new Error("Cannot collect artifacts while a process is running.");return jc(this.sandbox,this.workingDir,e)}async uploadContext(e){let n=await this.getSandbox();await this.uploadContextFiles(n,e);}async uploadFiles(e){let n=await this.getSandbox();await this.uploadWorkspaceFiles(n,e);}async uploadFileFromPath(e,n){let r=await this.getSandbox(),s=e.startsWith("/")?e:`${this.workingDir}/${e}`,o=s.substring(0,s.lastIndexOf("/"));if(o&&await r.commands.run(`mkdir -p ${o}`,{timeoutMs:3e4}),r.files.writeFromPath){await r.files.writeFromPath(s,n);return}let{readFile:c}=await import('fs/promises');await r.files.write(s,await c(n));}async getOutputFiles(e=false){let n=await this.getSandbox(),r=`${this.workingDir}/output`,s=e?"":"-maxdepth 1",c=(await n.commands.run(`find ${r} ${s} -type f -exec stat -c '%n|%Z' {} \\; 2>/dev/null || true`,{timeoutMs:3e4})).stdout.split(`
669
+ `).filter(Boolean),u=this.lastRunTimestamp?Math.floor(this.lastRunTimestamp/1e3)-2:0,l=[],i=`${r}/`;for(let m of c){let[f,h]=m.split("|");if(!f||!h)continue;let b=parseInt(h,10);u>0&&b<u||l.push(f);}let a={},d=await Promise.all(l.map(async m=>{try{let f=await n.files.read(m);return {relativePath:m.startsWith(i)?m.slice(i.length):m.split("/").pop()||m,content:f}}catch{return null}}));for(let m of d)m&&(a[m.relativePath]=m.content);if(!this.zodSchema&&!this.jsonSchema)return {files:a,data:null};let p=a["result.json"];if(!p)return {files:a,data:null,error:"Schema provided but agent did not create output/result.json"};let g=typeof p=="string"?p:new TextDecoder().decode(p);try{let m=JSON.parse(g);if(this.zodSchema){let f=this.zodSchema.safeParse(m);return f.success?{files:a,data:f.data}:{files:a,data:null,error:`Schema validation failed: ${f.error.message}`,rawData:g}}if(this.compiledValidator){if(this.compiledValidator(m))return {files:a,data:m};{let h=this.compiledValidator.errors?.map(b=>`${b.instancePath} ${b.message}`).join(", ")||"Unknown validation error";return {files:a,data:null,error:`Schema validation failed: ${h}`,rawData:g}}}return {files:a,data:null}}catch(m){return {files:a,data:null,error:`Failed to parse result.json: ${m.message}`,rawData:g}}}async checkpoint(e){if(!this.storage)throw new Error("Storage not configured. Call .withStorage().");if(!this.sandbox)throw new Error("No active sandbox. Call run() first.");let n=await si(this.sandbox,this.storage,this.agentConfig.type,this.workingDir,{tag:this.sessionTag,model:this.agentConfig.model||this.registry.defaultModel,workspaceMode:this.options.workspaceMode||"knowledge",comment:e?.comment,parentId:this.lastCheckpointId});return this.lastCheckpointId=n.id,n}getSession(){return this.sandbox?.sandboxId||this.options.sandboxId||null}async setSession(e){if(this.credentialsSealed)throw new Error("Agent credentials are sealed and this Evolve instance cannot switch sandboxes");if(this.options.managedSecrets)throw new Error("setSession() cannot be used with managed secrets; managed secret grants are sandbox-scoped.");if(this.options.sandboxCreateOptions?.user)throw new Error("setSession() cannot be used with a configured sandbox user; the user cannot be enforced on an existing sandbox.");if(this.activeCommand&&!await this.interrupt())throw new Error("Cannot switch session while an active process is running and could not be interrupted.");await this.rotateSession(),await this.closeProviderRuntimeToken(),await this.closeManagedSecretRuntimeToken(),await this.closeManagedBrowserSession(),this.options.sandboxId=e,this.sandbox=void 0,this.interruptedOperations.clear(),this.invalidateActiveOperation(),this.sandboxState="ready",this.agentState="idle",this.hasRun=true,this.lastCheckpointId=void 0;}async pause(e){this.sandbox&&(this.activeCommand&&await this.interrupt(e),await this.sandbox.pause(),this.sandboxState="paused",this.agentState="idle",this.emitLifecycle(e,"sandbox_pause"));}async resume(e){this.sandbox&&this.options.sandboxProvider&&(this.sandbox=await this.options.sandboxProvider.connect(this.sandbox.sandboxId),this.sandboxState="ready",this.agentState="idle",this.emitLifecycle(e,"sandbox_resume"));}async interrupt(e){if(!this.activeCommand&&!this.activeProcessId)return false;let n=this.activeOperationId,r=this.activeOperationKind,s=false;try{this.activeCommand?s=await this.activeCommand.kill():this.sandbox&&this.activeProcessId&&(s=await this.sandbox.commands.kill(this.activeProcessId));}catch{s=false;}if(!s)return this.sandboxState="running",this.agentState="running",false;n!==null&&this.interruptedOperations.add(n),this.invalidateActiveOperation(),this.sandboxState="ready",this.agentState="interrupted";let o=r==="run"?"run_interrupted":"command_interrupted";return this.emitLifecycle(e,o),s}status(){let e=this.browserRuntimeInfo();return {sandboxId:this.getSession(),sandbox:this.sandboxState,agent:this.agentState,activeProcessId:this.activeProcessId,hasRun:this.hasRun,timestamp:new Date().toISOString(),...e?{browser:e}:{}}}async kill(e){await this.rotateSession();let n;try{this.activeCommand&&await this.interrupt(e),this.sandbox&&(await this.sandbox.kill(),this.sandbox=void 0);}catch(r){n=r;}finally{await this.closeProviderRuntimeToken(),await this.closeManagedSecretRuntimeToken(),await this.closeManagedBrowserSession();}if(n)throw n;this.options.sandboxId=void 0,this.interruptedOperations.clear(),this.invalidateActiveOperation(),this.sandboxState="stopped",this.agentState="idle",this.hasRun=false,this.lastCheckpointId=void 0,this.emitLifecycle(e,"sandbox_killed");}async getHost(e){return (await this.getSandbox()).getHost(e)}getAgentType(){return this.agentConfig.type}getSessionTag(){return !this.sandbox&&!this.sessionLogger?null:this.sessionTag}getSessionTimestamp(){return this.sessionLogger?.getTimestamp()||null}async flushObservability(){await this.sessionLogger?.flush();}async rotateSession(){let e=!!this.sessionLogger;this.sessionLogger&&(await this.sessionLogger.close(),this.sessionLogger=void 0),e&&(this.previousSessionTag=this.sessionTag),this.sessionTag=Jc(this.options.sessionTagPrefix||"evolve");}async fetchSpend(e){if(this.agentConfig.isDirectMode)throw new Error("Cost tracking requires gateway mode (set EVOLVE_API_KEY).");let n=this.agentConfig.apiKey;if(!n)throw new Error("Cost tracking requires an API key.");let r=process.env.EVOLVE_DASHBOARD_URL||M,s=await fetch(`${r}/api/sessions/spend?${e}`,{headers:{Authorization:`Bearer ${n}`},signal:AbortSignal.timeout(1e4)});if(!s.ok){let o=await s.text().catch(()=>"");throw new Error(`Spend query failed (${s.status}): ${o}`)}return s}resolveSpendTag(){if(this.sandbox||this.sessionLogger)return this.sessionTag;if(this.previousSessionTag)return this.previousSessionTag;throw new Error("No session to query. Call run() first.")}normalizeRunCost(e,n){return {...e,asOf:e.asOf??n.asOf,isComplete:e.isComplete??n.isComplete,truncated:e.truncated??n.truncated}}normalizeSessionCost(e){let n={asOf:e.asOf,isComplete:e.isComplete,truncated:e.truncated};return {...e,runs:e.runs.map(r=>this.normalizeRunCost(r,n))}}async getSessionCost(){let e=this.resolveSpendTag(),n=new URLSearchParams({tag:e}),s=await(await this.fetchSpend(n)).json();return this.normalizeSessionCost(s)}async getRunCost(e){let n=this.resolveSpendTag();if("runId"in e){let c=new URLSearchParams({tag:n,runId:e.runId}),l=await(await this.fetchSpend(c)).json();return this.normalizeRunCost(l,{asOf:new Date().toISOString(),isComplete:false,truncated:false})}let r=await this.getSessionCost(),s=e.index>0?e.index-1:r.runs.length+e.index,o=r.runs[s];if(!o)throw new Error(`Run index ${e.index} out of range. Session has ${r.runs.length} run(s).`);return o}};function uf(t){return (t||process.env.EVOLVE_DASHBOARD_URL||M).replace(/\/$/,"")}function pf(t){let e=t||process.env.EVOLVE_API_KEY;if(!e)throw new Error("Browser profiles require EVOLVE_API_KEY or an explicit apiKey");return e}async function gf(t){return await t.text().catch(()=>"")}async function Gc(t,e,n={}){let r=await fetch(`${uf(t?.dashboardUrl)}${e}`,{...n,headers:{Authorization:`Bearer ${pf(t?.apiKey)}`,accept:"application/json",...n.body?{"content-type":"application/json"}:{},...n.headers||{}}});if(!r.ok)throw new Error(`Browser profiles request failed (${r.status}): ${await gf(r)}`);return r.status===204?{}:await r.json()}var Ar=class{constructor(e={}){this.config=e;}toMetadata(e){return {id:e.id,profile:e.profile,createdAt:e.createdAt||e.created_at||"",updatedAt:e.updatedAt||e.updated_at||"",lastUsedAt:e.lastUsedAt??e.last_used_at??null}}async list(){return {profiles:(await Gc(this.config,"/api/browser-profiles")).profiles.map(n=>this.toMetadata(n))}}async delete(e){return await Gc(this.config,"/api/browser-profiles",{method:"DELETE",body:JSON.stringify(e)})}};function Ni(t={}){return new Ar(t)}var nn=class extends events.EventEmitter{config={};agent;fallbackSandboxState="stopped";fallbackAgentState="idle";fallbackHasRun=false;constructor(){super();}on(e,n){return super.on(e,n)}off(e,n){return super.off(e,n)}emit(e,...n){return super.emit(e,...n)}withAgent(e){return e&&(St(e),mn(e),this.config.agent=e,this._cachedGatewayOverrides=null),this}withSandbox(e){return this.config.sandbox=e,this}withSandboxCreateOptions(e){return this.config.sandboxCreateOptions={...e,envs:e.envs?{...e.envs}:void 0,metadata:e.metadata?{...e.metadata}:void 0},this}withWorkingDirectory(e){return this.config.workingDirectory=e,this}withWorkspaceMode(e){return this.config.workspaceMode=e,this}withSecrets(e){return this.config.secrets={...this.config.secrets,...e},this}withManagedSecrets(e){return this.config.managedSecrets=e,this}withSession(e){return this.config.sandboxId=e,this.agent||(this.fallbackSandboxState="ready",this.fallbackAgentState="idle",this.fallbackHasRun=true),this}withSystemPrompt(e){return this.config.systemPrompt=e,this}withContext(e){return this.config.context={...this.config.context,...e},this}withFiles(e){return this.config.files={...this.config.files,...e},this}withMcpServers(e){return this.config.mcpServers={...this.config.mcpServers,...e},this}withBrowser(e={provider:"agent-browser",remote:true}){return e===false?delete this.config.browser:this.config.browser=e,this}withBrowserCredentials(e={}){return this.config.browserCredentials=e,this}withPlugins(e){let n=Array.isArray(e)?e:[e];return this.config.plugins=[...this.config.plugins??[],...n],this}withSkills(e){return this.config.skills=e,this}withSchema(e,n){return this.config.schema=e,n&&(me(e)?console.warn("[Evolve] schemaOptions ignored for Zod schemas - use .passthrough(), .strip(), z.coerce instead"):this.config.schemaOptions=n),this}withSessionTagPrefix(e){return this.config.sessionTagPrefix=e,this}withOrg(e){return this.config.org=e,this}withObservability(e){return this.config.observability={...this.config.observability,...e},this}withIntegrations(e){return this.config.integrations=e,this}withStorage(e){return this.config.storage=e||{},this}static integrations=La;static browserCredentials=di;static browserProfiles=Ni;static managedSecrets=Di;async initializeAgent(){let e=fn(this.config.agent),n=te(e.type);if(this.config.integrations&&e.isDirectMode)throw new Error("withIntegrations() is available only in gateway mode with EVOLVE_API_KEY");if(this.config.managedSecrets&&e.isDirectMode)throw new Error("withManagedSecrets() is available only in gateway mode with EVOLVE_API_KEY");if(this.config.managedSecrets&&this.config.sandboxId)throw new Error("withManagedSecrets() cannot be used with withSession(); managed secret grants are sandbox-scoped.");let r=Uc(this.config.managedSecrets,n);if(r&&this.config.sandbox&&!tt(this.config.sandbox))throw new Error("withManagedSecrets() requires an Evolve-managed sandbox; remove withSandbox() or pass a managed sandbox provider.");let s=this.config.sandbox??(r?await At(e.apiKey):await ir()),o={},c,u,l=this.config.skills,i;if(this.config.browser){let p=hl(this.config.browser);if(i=p,p.provider==="browser-use"){if(e.isDirectMode)throw new Error('withBrowser("browser-use") requires gateway mode. Use apiKey/EVOLVE_API_KEY instead of providerApiKey/direct mode.');o=zi(e.apiKey);}if((p.provider==="actionbook"||p.provider==="agent-browser")&&p.managed){if(e.isDirectMode)throw new Error(`Managed browser provider "${p.provider}" requires gateway mode. Use apiKey/EVOLVE_API_KEY instead of providerApiKey/direct mode.`);c=p.provider==="actionbook"?zs:Aa,u={provider:p.provider,apiKey:e.apiKey,dashboardUrl:process.env.EVOLVE_DASHBOARD_URL||M,...p.profile?{profile:p.profile}:{}};}if(p.profile&&!p.managed)throw new Error('withBrowser({ profile }) requires managed remote browser mode. Use .withBrowser({ profile }) or .withBrowser({ provider: "agent-browser", remote: true, profile }).')}if(this.config.browserCredentials!==void 0){if(this.config.sandboxId)throw new Error("withBrowserCredentials() cannot be used with withSession(); browser login tokens are run-scoped.");if(e.isDirectMode)throw new Error("withBrowserCredentials() requires gateway mode. Use apiKey/EVOLVE_API_KEY instead of providerApiKey/direct mode.");if(!i||i.provider!=="agent-browser"||!i.managed)throw new Error('withBrowserCredentials() requires .withBrowser() or .withBrowser({ provider: "agent-browser", remote: true }).');if(this.config.mcpServers?.["browser-login"])throw new Error('withBrowserCredentials() reserves the "browser-login" MCP server name.')}let a=this.config.storage!==void 0?lr(this.config.storage,!e.isDirectMode,M,e.isDirectMode?void 0:e.apiKey):void 0,d={sandboxProvider:s,sandboxCreateOptions:this.config.sandboxCreateOptions,secrets:this.config.secrets,managedSecrets:r?{secrets:r,apiKey:e.apiKey,dashboardUrl:process.env.EVOLVE_DASHBOARD_URL||M}:void 0,sandboxId:this.config.sandboxId,workingDirectory:this.config.workingDirectory,workspaceMode:this.config.workspaceMode,systemPrompt:this.config.systemPrompt,context:this.config.context,files:this.config.files,mcpServers:{...o,...this.config.mcpServers},browserPrompt:c,managedBrowser:u,browserCredentials:this.config.browserCredentials!==void 0?{apiKey:e.apiKey,dashboardUrl:process.env.EVOLVE_DASHBOARD_URL||M,config:this.config.browserCredentials}:void 0,plugins:this.config.plugins,skills:l,schema:this.config.schema,schemaOptions:this.config.schemaOptions,sessionTagPrefix:this.config.sessionTagPrefix,org:this.config.org,observability:this.config.observability,integrations:this.config.integrations?{...this.config.integrations,apiKey:e.apiKey,dashboardUrl:process.env.EVOLVE_DASHBOARD_URL||M}:void 0,providerRouting:e.isDirectMode?void 0:{apiKey:e.apiKey,dashboardUrl:process.env.EVOLVE_DASHBOARD_URL||M},storage:a};this.agent=new tn(e,d);}createStreamCallbacks(){let e=this.listenerCount("stdout")>0,n=this.listenerCount("stderr")>0,r=this.listenerCount("content")>0,s=this.listenerCount("lifecycle")>0;return {onStdout:e?o=>this.emit("stdout",o):void 0,onStderr:n?o=>this.emit("stderr",o):void 0,onContent:r?o=>this.emit("content",o):void 0,onLifecycle:s?o=>this.emit("lifecycle",o):void 0}}emitLifecycleFromStatus(e){if(this.listenerCount("lifecycle")===0)return;let n=this.status();this.emit("lifecycle",{sandboxId:n.sandboxId,sandbox:n.sandbox,agent:n.agent,timestamp:new Date().toISOString(),reason:e,...n.browser?{browser:n.browser}:{}});}async run({prompt:e,timeoutMs:n,background:r,from:s,checkpointComment:o,resume:c}){if(s&&this.config.sandboxId)throw new Error("Cannot use 'from' with 'withSession()' \u2014 restore requires a fresh sandbox.");this.agent||await this.initializeAgent();let u=this.createStreamCallbacks();return this.agent.run({prompt:e,timeoutMs:n,background:r,from:s,checkpointComment:o,resume:c},u)}async executeCommand(e,n={}){this.agent||await this.initializeAgent();let r=this.createStreamCallbacks();return this.agent.executeCommand(e,n,r)}async prepareSandbox(){this.agent||await this.initializeAgent();let e=this.createStreamCallbacks();return (await this.agent.getSandbox(e)).sandboxId}async updateNetwork(e){if(!this.agent)throw new Error("No sandbox yet. Call prepareSandbox(), run() or executeCommand() before updateNetwork().");let n=await this.agent.getSandbox(this.createStreamCallbacks());if(typeof n.updateNetwork!="function")throw new Error(`The ${this.config.sandbox?.providerType??"configured"} sandbox provider cannot change network policy after start. Create the sandbox with the policy it needs for its whole lifetime, or use a provider that supports runtime changes.`);await n.updateNetwork(e);}async sealCredentials(){if(!this.agent)throw new Error("Agent not initialized. Call run() or executeCommand() first.");await this.agent.sealCredentials();}isSealed(){return this.agent?.isSealed()??false}resolvedSkills(){return this.agent?.resolvedSkills()??[]}async collectArtifacts(e){if(!this.agent)throw new Error("Agent not initialized. Call run() or executeCommand() first.");return this.agent.collectArtifacts(e)}async interrupt(){if(!this.agent)return false;let e=this.createStreamCallbacks();return this.agent.interrupt(e)}async uploadContext(e){return this.agent||await this.initializeAgent(),this.agent.uploadContext(e)}async uploadFiles(e){return this.agent||await this.initializeAgent(),this.agent.uploadFiles(e)}async uploadFileFromPath(e,n){return this.agent||await this.initializeAgent(),this.agent.uploadFileFromPath(e,n)}async getOutputFiles(e=false){if(!this.agent)throw new Error("Agent not initialized. Call run() first.");return this.agent.getOutputFiles(e)}async checkpoint(e){if(!this.agent)throw new Error("Agent not initialized. Call run() first.");return this.agent.checkpoint(e)}_cachedGatewayOverrides=null;resolveGatewayOverrides(){if(this._cachedGatewayOverrides!==null)return this._cachedGatewayOverrides||void 0;try{let e=fn(this.config.agent);if(!e.isDirectMode)return this._cachedGatewayOverrides={gatewayUrl:M,gatewayApiKey:e.apiKey},this._cachedGatewayOverrides}catch{}this._cachedGatewayOverrides=void 0;}async listCheckpoints(e){if(this.config.storage===void 0)throw new Error("Storage not configured. Call .withStorage().");return ai(this.config.storage,this.resolveGatewayOverrides()||{}).listCheckpoints(e)}storage(){if(this.config.storage===void 0)throw new Error("Storage not configured. Call .withStorage().");return ai(this.config.storage,this.resolveGatewayOverrides()||{})}getSession(){return this.agent?this.agent.getSession():this.config.sandboxId??null}async setSession(e){if(this.config.managedSecrets)throw new Error("setSession() cannot be used with withManagedSecrets(); managed secret grants are sandbox-scoped.");this.agent?await this.agent.setSession(e):(this.fallbackSandboxState="ready",this.fallbackAgentState="idle",this.fallbackHasRun=true),this.config.sandboxId=e;}status(){return this.agent?this.agent.status():{sandboxId:this.config.sandboxId??null,sandbox:this.fallbackSandboxState,agent:this.fallbackAgentState,activeProcessId:null,hasRun:this.fallbackHasRun,timestamp:new Date().toISOString()}}async pause(){if(this.agent){let e=this.createStreamCallbacks();await this.agent.pause(e);return}this.config.sandboxId&&this.config.sandbox&&(await(await this.config.sandbox.connect(this.config.sandboxId)).pause(),this.fallbackSandboxState="paused",this.fallbackAgentState="idle",this.emitLifecycleFromStatus("sandbox_pause"));}async resume(){if(this.agent){let e=this.createStreamCallbacks();await this.agent.resume(e);return}this.config.sandboxId&&this.config.sandbox&&(await this.config.sandbox.connect(this.config.sandboxId),this.fallbackSandboxState="ready",this.fallbackAgentState="idle",this.emitLifecycleFromStatus("sandbox_resume"));}async kill(){if(this.agent){let e=this.createStreamCallbacks();await this.agent.kill(e),this.config.sandboxId=void 0,this.fallbackSandboxState="stopped",this.fallbackAgentState="idle",this.fallbackHasRun=false;return}this.config.sandboxId&&this.config.sandbox&&(await(await this.config.sandbox.connect(this.config.sandboxId)).kill(),this.fallbackSandboxState="stopped",this.fallbackAgentState="idle",this.fallbackHasRun=false,this.emitLifecycleFromStatus("sandbox_killed"),this.config.sandboxId=void 0);}async getHost(e){return this.agent||await this.initializeAgent(),this.agent.getHost(e)}getSessionTag(){return this.agent?.getSessionTag()||null}getSessionTimestamp(){return this.agent?.getSessionTimestamp()||null}async flushObservability(){await this.agent?.flushObservability();}async getSessionCost(){if(!this.agent)throw new Error("No agent initialized. Call run() first.");return this.agent.getSessionCost()}async getRunCost(e){if(!this.agent)throw new Error("No agent initialized. Call run() first.");return this.agent.getRunCost(e)}};var mt=class{permits;queue=[];constructor(e){if(e<1)throw new Error("Semaphore max must be >= 1");this.permits=e;}async use(e){await this.acquire();try{return await e()}finally{this.release();}}acquire(){return this.permits>0?(this.permits--,Promise.resolve()):new Promise(e=>this.queue.push(e))}release(){this.queue.length>0?this.queue.shift()():this.permits++;}};var Be=Symbol.for("evolve.SwarmResult"),ft=class t extends Array{get success(){return this.filter(e=>e.status==="success")}get filtered(){return this.filter(e=>e.status==="filtered")}get error(){return this.filter(e=>e.status==="error")}static from(e){let n=new t;return n.push(...e),n}};var Bi=class t{config;semaphore;constructor(e={}){let n=e.concurrency??Hi;if(n>Fr)throw new Error(`concurrency=${n} exceeds max ${Fr}. For higher parallelism, scale horizontally with multiple processes.`);this.config={agent:e.agent,sandbox:e.sandbox,tag:e.tag??"swarm",concurrency:n,timeoutMs:e.timeoutMs??_t,workspaceMode:e.workspaceMode??"knowledge",retry:e.retry,mcpServers:e.mcpServers,skills:e.skills,integrations:e.integrations},this.semaphore=new mt(this.config.concurrency);}async map(e){let{items:n,prompt:r,bestOf:s,verify:o}=e,c=e.retry??this.config.retry,u=this.generateOperationId(),l=e.timeoutMs??this.config.timeoutMs;if(s&&o)throw new Error("map() cannot use both bestOf and verify options simultaneously");let i=await Promise.all(n.map((a,d)=>s?this.executeMapItemWithBestOf(a,r,d,u,e,l,c):o?this.executeMapItemWithVerify(a,r,d,u,e,l,c):c?ae(p=>this.executeMapItem(a,r,d,u,e,l,p),c,d):this.executeMapItem(a,r,d,u,e,l)));return ft.from(i)}async filter(e){let{items:n,prompt:r,condition:s,verify:o}=e,c=e.retry??this.config.retry,u=this.generateOperationId(),l=e.timeoutMs??this.config.timeoutMs,i=await Promise.all(n.map((d,p)=>o?this.executeFilterItemWithVerify(d,r,p,u,e,l,c):c?ae(g=>this.executeFilterItem(d,r,p,u,e,l,g),c,p):this.executeFilterItem(d,r,p,u,e,l))),a=[];for(let d of i)if(d.status==="error")a.push(d);else if(d.data!==null)try{s(d.data)?a.push(d):a.push({...d,status:"filtered"});}catch(p){a.push({...d,status:"error",data:null,error:`Condition function threw: ${p.message}`});}return ft.from(a)}async reduce(e){let{items:n,prompt:r,verify:s}=e,o=e.retry??this.config.retry,c=this.generateOperationId(),u=e.timeoutMs??this.config.timeoutMs,l=[],i=[];n.forEach((y,k)=>{l.push(this.getFiles(y)),i.push(this.getIndex(y,k));});let a={};l.forEach((y,k)=>{Object.entries(y).forEach(([R,S])=>{a[`item_${i[k]}/${R}`]=S;});});let d=or(a),p=Re(Ma,{fileTree:d}),g=e.systemPrompt?`${p}
665
670
 
666
- ${e.systemPrompt}`:p,m=(w,S,v)=>({operationId:d,operation:"reduce",tag:w.tag,sandboxId:w.sandboxId,swarmName:this.config.tag,operationName:e.name,inputCount:n.length,inputIndices:i,errorRetry:S,verifyRetry:v,...this.pipelineContextToMeta(e._pipelineContext)}),h=e.mcpServers??this.config.mcpServers,f=e.skills??this.config.skills,y=e.integrations??this.config.integrations,b=async(w,S,v,x)=>{let R=await this.semaphore.use(()=>this.execute(o,w,{systemPrompt:g,schema:e.schema,schemaOptions:e.schemaOptions,agent:e.agent,mcpServers:h,skills:f,integrations:y,tagPrefix:S,timeoutMs:u,observability:{swarmName:this.config.tag,operationName:e.name,operationId:d,operation:"reduce",role:"worker",errorRetry:v,verifyRetry:x&&x>1?x-1:void 0,...this.pipelineContextToObservability(e._pipelineContext)}})),I=m(R,v,x&&x>1?x-1:void 0);return R.error?{status:"error",data:null,files:R.files,meta:I,error:R.error,rawData:R.rawData}:{status:"success",data:R.data,files:R.files,meta:I}},_=`${this.config.tag}-reduce`;return s?this.runWithVerification((w,S,v)=>b(w,S,void 0,v),{originalPrompt:r,inputFiles:o,verifyConfig:s,timeoutMs:u,systemPrompt:g,schema:e.schema,mcpServers:h,skills:f,integrations:y,operationId:d,baseTag:_,retry:a,operation:"reduce",_pipelineContext:e._pipelineContext}):a?G(w=>{let S=w>1?w-1:void 0,v=S?`${_}-er${S}`:_;return b(r,v,S)},a):b(r,_)}async bestOf(e){let{item:n,prompt:r,config:s}=e,a=e.retry??this.config.retry,d=s.n??s.taskAgents?.length;if(d===void 0)throw new Error("bestOf requires n or taskAgents");if(d<2)throw new Error("bestOf requires n >= 2");let u=this.generateOperationId(),c=e.timeoutMs??this.config.timeoutMs,i=this.getFiles(n),o=s.mcpServers??this.config.mcpServers,l=s.judgeMcpServers??s.mcpServers??this.config.mcpServers,p=s.skills??this.config.skills,g=s.judgeSkills??s.skills??this.config.skills,m=s.integrations??this.config.integrations,h=s.judgeIntegrations??s.integrations??this.config.integrations,f=await Promise.all(Array.from({length:d},async(S,v)=>{let x=a?await G(R=>this.executeBestOfCandidate({inputFiles:i,prompt:r,candidateIndex:v,operationId:u,config:s,systemPrompt:e.systemPrompt,schema:e.schema,schemaOptions:e.schemaOptions,mcpServers:o,skills:p,integrations:m,timeoutMs:c,attempt:R}),a,v):await this.executeBestOfCandidate({inputFiles:i,prompt:r,candidateIndex:v,operationId:u,config:s,systemPrompt:e.systemPrompt,schema:e.schema,schemaOptions:e.schemaOptions,mcpServers:o,skills:p,integrations:m,timeoutMs:c});return s.onCandidateComplete?.(0,v,x.status==="success"?"success":"error"),x})),y=a?await G(S=>this.executeBestOfJudge({inputFiles:i,taskPrompt:r,candidates:f,config:s,timeoutMs:c,operationId:u,systemPrompt:e.systemPrompt,schema:e.schema,schemaOptions:e.schemaOptions,mcpServers:l,skills:g,integrations:h,attempt:S}),{...a,retryOn:void 0},0):await this.executeBestOfJudge({inputFiles:i,taskPrompt:r,candidates:f,config:s,timeoutMs:c,operationId:u,systemPrompt:e.systemPrompt,schema:e.schema,schemaOptions:e.schemaOptions,mcpServers:l,skills:g,integrations:h}),b=f.findIndex(S=>S.status==="success"),_=y.decision?.winner??(b>=0?b:0);s.onJudgeComplete?.(0,_,y.decision?.reasoning??"Judge failed to provide reasoning");let w={operationId:u,operation:"bestof-judge",tag:y.tag,sandboxId:y.sandboxId,swarmName:this.config.tag,operationName:e.name,candidateCount:d};return {winner:f[_]??f[0],winnerIndex:_,judgeReasoning:y.decision?.reasoning??"Judge failed to provide reasoning",judgeMeta:w,candidates:f}}async execute(e,n,r){let s=null,a="",d=r.tagPrefix,u={},c=null,i,o,l={...this.config.agent,...r.agent};try{s=new Mt().withAgent(l).withSandbox(this.config.sandbox).withWorkspaceMode(this.config.workspaceMode).withSessionTagPrefix(r.tagPrefix),r.schema&&s.withSchema(r.schema,r.schemaOptions),r.systemPrompt&&s.withSystemPrompt(r.systemPrompt),r.mcpServers&&s.withMcpServers(r.mcpServers),r.skills?.length&&s.withSkills(r.skills),r.integrations&&s.withIntegrations(r.integrations),r.observability&&s.withObservability(r.observability),Object.keys(e).length>0&&s.withContext(e);let p=await s.run({prompt:n,timeoutMs:r.timeoutMs});a=p.sandboxId,d=s.getSessionTag()??r.tagPrefix;let g=null;try{g=await s.getOutputFiles(!0),u=g.files;}catch{}p.exitCode!==0?i=`Agent exited with code ${p.exitCode}`:r.schema?g?(c=g.data,g.error&&(i=g.error),g.rawData&&(o=g.rawData)):i="Failed to read output files from sandbox":c=u;}catch(p){if(i=p.message,s){d=s.getSessionTag()??r.tagPrefix;try{u=(await s.getOutputFiles(!0)).files;}catch{}}}finally{s&&await s.kill().catch(()=>{});}return {files:u,data:c,tag:d,sandboxId:a,error:i,rawData:o}}async executeMapItem(e,n,r,s,a,d,u=1){let c=this.getFiles(e),i=u>1?`${this.config.tag}-map-${r}-er${u-1}`:`${this.config.tag}-map-${r}`,o=this.evaluatePrompt(n,c,r);if(o instanceof Error)return this.buildErrorResult(`Prompt function threw: ${o.message}`,{operationId:s,operation:"map",tag:i,sandboxId:"",itemIndex:r});let l=a.mcpServers??this.config.mcpServers,p=a.skills??this.config.skills,g=a.integrations??this.config.integrations,m=await this.semaphore.use(()=>this.execute(c,o,{systemPrompt:a.systemPrompt,schema:a.schema,schemaOptions:a.schemaOptions,agent:a.agent,mcpServers:l,skills:p,integrations:g,tagPrefix:i,timeoutMs:d,observability:{swarmName:this.config.tag,operationName:a.name,operationId:s,operation:"map",itemIndex:r,role:"worker",errorRetry:u>1?u-1:void 0,...this.pipelineContextToObservability(a._pipelineContext)}})),h={operationId:s,operation:"map",tag:m.tag,sandboxId:m.sandboxId,swarmName:this.config.tag,operationName:a.name,itemIndex:r,errorRetry:u>1?u-1:void 0,...this.pipelineContextToMeta(a._pipelineContext)};return this.buildResult(m,h)}async executeMapItemWithVerify(e,n,r,s,a,d,u){let c=this.getFiles(e),i=`${this.config.tag}-map-${r}`,o=a.verify,l=a.mcpServers??this.config.mcpServers,p=a.skills??this.config.skills,g=a.integrations??this.config.integrations,m=this.evaluatePrompt(n,c,r);if(m instanceof Error)return this.buildErrorResult(`Prompt function threw: ${m.message}`,{operationId:s,operation:"map",tag:i,sandboxId:"",itemIndex:r});let h=async(f,y,b)=>{let _=await this.semaphore.use(()=>this.execute(c,f,{systemPrompt:a.systemPrompt,schema:a.schema,schemaOptions:a.schemaOptions,agent:a.agent,mcpServers:l,skills:p,integrations:g,tagPrefix:y,timeoutMs:d,observability:{swarmName:this.config.tag,operationName:a.name,operationId:s,operation:"map",itemIndex:r,role:"worker",verifyRetry:b&&b>1?b-1:void 0,...this.pipelineContextToObservability(a._pipelineContext)}})),w={operationId:s,operation:"map",tag:_.tag,sandboxId:_.sandboxId,swarmName:this.config.tag,operationName:a.name,itemIndex:r,verifyRetry:b&&b>1?b-1:void 0,...this.pipelineContextToMeta(a._pipelineContext)};return this.buildResult(_,w)};return this.runWithVerification(h,{originalPrompt:m,inputFiles:c,verifyConfig:o,timeoutMs:d,systemPrompt:a.systemPrompt,schema:a.schema,mcpServers:l,skills:p,integrations:g,operationId:s,baseTag:i,retry:u,itemIndex:r,operation:"map",_pipelineContext:a._pipelineContext})}async executeMapItemWithBestOf(e,n,r,s,a,d,u){let c=this.getFiles(e),i=`${this.config.tag}-map-${r}`,o=this.evaluatePrompt(n,c,r);if(o instanceof Error)return this.buildErrorResult(`Prompt function threw: ${o.message}`,{operationId:s,operation:"map",tag:i,sandboxId:"",itemIndex:r});let l=a.bestOf,p=l.n??l.taskAgents?.length;if(p===void 0||p<2)return this.buildErrorResult("bestOf requires n >= 2 or taskAgents with at least 2 elements",{operationId:s,operation:"map",tag:i,sandboxId:"",itemIndex:r});let g=a.mcpServers??this.config.mcpServers,m=l.mcpServers??g,h=l.judgeMcpServers??l.mcpServers??g,f=a.skills??this.config.skills,y=l.skills??f,b=l.judgeSkills??l.skills??f,_=a.integrations??this.config.integrations,w=l.integrations??_,S=l.judgeIntegrations??l.integrations??_,v=await Promise.all(Array.from({length:p},async($,Dt)=>{let Js=u?await G(vl=>this.executeBestOfCandidate({inputFiles:c,prompt:o,candidateIndex:Dt,operationId:s,config:l,systemPrompt:a.systemPrompt,schema:a.schema,schemaOptions:a.schemaOptions,mcpServers:m,skills:y,integrations:w,timeoutMs:d,parentIndex:r,attempt:vl,_pipelineContext:a._pipelineContext}),u,Dt):await this.executeBestOfCandidate({inputFiles:c,prompt:o,candidateIndex:Dt,operationId:s,config:l,systemPrompt:a.systemPrompt,schema:a.schema,schemaOptions:a.schemaOptions,mcpServers:m,skills:y,integrations:w,timeoutMs:d,parentIndex:r,_pipelineContext:a._pipelineContext});return l.onCandidateComplete?.(r,Dt,Js.status==="success"?"success":"error"),Js})),x=u?await G($=>this.executeBestOfJudge({inputFiles:c,taskPrompt:o,candidates:v,config:l,timeoutMs:d,operationId:s,systemPrompt:a.systemPrompt,schema:a.schema,schemaOptions:a.schemaOptions,mcpServers:h,skills:b,integrations:S,parentIndex:r,attempt:$,_pipelineContext:a._pipelineContext}),{...u,retryOn:void 0},0):await this.executeBestOfJudge({inputFiles:c,taskPrompt:o,candidates:v,config:l,timeoutMs:d,operationId:s,systemPrompt:a.systemPrompt,schema:a.schema,schemaOptions:a.schemaOptions,mcpServers:h,skills:b,integrations:S,parentIndex:r,_pipelineContext:a._pipelineContext}),R=v.findIndex($=>$.status==="success"),I=x.decision?.winner??(R>=0?R:0),E=v[I]??v[0];l.onJudgeComplete?.(r,I,x.decision?.reasoning??"Judge failed to provide reasoning");let A={operationId:s,operation:"bestof-judge",tag:x.tag,sandboxId:x.sandboxId,swarmName:this.config.tag,operationName:a.name,candidateCount:p,...this.pipelineContextToMeta(a._pipelineContext)};return {...E,meta:{...E.meta,operation:"map",swarmName:this.config.tag,operationName:a.name,itemIndex:r,...this.pipelineContextToMeta(a._pipelineContext)},bestOf:{winnerIndex:I,judgeReasoning:x.decision?.reasoning??"Judge failed to provide reasoning",judgeMeta:A,candidates:v}}}async executeFilterItem(e,n,r,s,a,d,u=1){let c=this.getFiles(e),i=u>1?`${this.config.tag}-filter-${r}-er${u-1}`:`${this.config.tag}-filter-${r}`,o=a.mcpServers??this.config.mcpServers,l=a.skills??this.config.skills,p=a.integrations??this.config.integrations,g=await this.semaphore.use(()=>this.execute(c,n,{systemPrompt:a.systemPrompt,schema:a.schema,schemaOptions:a.schemaOptions,agent:a.agent,mcpServers:o,skills:l,integrations:p,tagPrefix:i,timeoutMs:d,observability:{swarmName:this.config.tag,operationName:a.name,operationId:s,operation:"filter",itemIndex:r,role:"worker",errorRetry:u>1?u-1:void 0,...this.pipelineContextToObservability(a._pipelineContext)}})),m={operationId:s,operation:"filter",tag:g.tag,sandboxId:g.sandboxId,swarmName:this.config.tag,operationName:a.name,itemIndex:r,errorRetry:u>1?u-1:void 0,...this.pipelineContextToMeta(a._pipelineContext)};return this.buildResult(g,m,c)}async executeFilterItemWithVerify(e,n,r,s,a,d,u){let c=this.getFiles(e),i=`${this.config.tag}-filter-${r}`,o=a.verify,l=a.mcpServers??this.config.mcpServers,p=a.skills??this.config.skills,g=a.integrations??this.config.integrations,m=async(h,f,y)=>{let b=await this.semaphore.use(()=>this.execute(c,h,{systemPrompt:a.systemPrompt,schema:a.schema,schemaOptions:a.schemaOptions,agent:a.agent,mcpServers:l,skills:p,integrations:g,tagPrefix:f,timeoutMs:d,observability:{swarmName:this.config.tag,operationName:a.name,operationId:s,operation:"filter",itemIndex:r,role:"worker",verifyRetry:y&&y>1?y-1:void 0,...this.pipelineContextToObservability(a._pipelineContext)}})),_={operationId:s,operation:"filter",tag:b.tag,sandboxId:b.sandboxId,swarmName:this.config.tag,operationName:a.name,itemIndex:r,verifyRetry:y&&y>1?y-1:void 0,...this.pipelineContextToMeta(a._pipelineContext)};return this.buildResult(b,_,c)};return this.runWithVerification(m,{originalPrompt:n,inputFiles:c,verifyConfig:o,timeoutMs:d,systemPrompt:a.systemPrompt,schema:a.schema,mcpServers:l,skills:p,integrations:g,operationId:s,baseTag:i,retry:u,itemIndex:r,operation:"filter",_pipelineContext:a._pipelineContext})}async executeBestOfCandidate(e){let{inputFiles:n,prompt:r,candidateIndex:s,operationId:a,config:d,timeoutMs:u,parentIndex:c,attempt:i=1,_pipelineContext:o}=e,l=c!==void 0?`${this.config.tag}-map-${c}-bestof-cand-${s}`:`${this.config.tag}-bestof-cand-${s}`,p=i>1?`${l}-er${i-1}`:l,g=await this.semaphore.use(()=>this.execute(n,r,{systemPrompt:e.systemPrompt,schema:e.schema,schemaOptions:e.schemaOptions,agent:d.taskAgents?.[s],mcpServers:e.mcpServers,skills:e.skills,integrations:e.integrations,tagPrefix:p,timeoutMs:u,observability:{swarmName:this.config.tag,operationId:a,operation:"map",itemIndex:c,role:"candidate",candidateIndex:s,errorRetry:i>1?i-1:void 0,...this.pipelineContextToObservability(o)}})),m={operationId:a,operation:"bestof-cand",tag:g.tag,sandboxId:g.sandboxId,swarmName:this.config.tag,itemIndex:s,errorRetry:i>1?i-1:void 0,candidateIndex:s,...this.pipelineContextToMeta(o)};return this.buildResult(g,m)}buildJudgeContext(e){let n=this.buildEvaluatorContext({inputFiles:e.inputFiles,taskPrompt:e.taskPrompt,systemPrompt:e.systemPrompt,schema:e.schema});return e.candidates.forEach((r,s)=>{r.status==="error"&&(n[`candidate_${s}/_failed.txt`]=`STATUS: FAILED
671
+ ${e.systemPrompt}`:p,m=(y,k,R)=>({operationId:c,operation:"reduce",tag:y.tag,sandboxId:y.sandboxId,swarmName:this.config.tag,operationName:e.name,inputCount:n.length,inputIndices:i,errorRetry:k,verifyRetry:R,...this.pipelineContextToMeta(e._pipelineContext)}),f=e.mcpServers??this.config.mcpServers,h=e.skills??this.config.skills,b=e.integrations??this.config.integrations,_=async(y,k,R,S)=>{let v=await this.semaphore.use(()=>this.execute(a,y,{systemPrompt:g,schema:e.schema,schemaOptions:e.schemaOptions,agent:e.agent,mcpServers:f,skills:h,integrations:b,tagPrefix:k,timeoutMs:u,observability:{swarmName:this.config.tag,operationName:e.name,operationId:c,operation:"reduce",role:"worker",errorRetry:R,verifyRetry:S&&S>1?S-1:void 0,...this.pipelineContextToObservability(e._pipelineContext)}})),E=m(v,R,S&&S>1?S-1:void 0);return v.error?{status:"error",data:null,files:v.files,meta:E,error:v.error,rawData:v.rawData}:{status:"success",data:v.data,files:v.files,meta:E}},w=`${this.config.tag}-reduce`;return s?this.runWithVerification((y,k,R)=>_(y,k,void 0,R),{originalPrompt:r,inputFiles:a,verifyConfig:s,timeoutMs:u,systemPrompt:g,schema:e.schema,mcpServers:f,skills:h,integrations:b,operationId:c,baseTag:w,retry:o,operation:"reduce",_pipelineContext:e._pipelineContext}):o?ae(y=>{let k=y>1?y-1:void 0,R=k?`${w}-er${k}`:w;return _(r,R,k)},o):_(r,w)}async bestOf(e){let{item:n,prompt:r,config:s}=e,o=e.retry??this.config.retry,c=s.n??s.taskAgents?.length;if(c===void 0)throw new Error("bestOf requires n or taskAgents");if(c<2)throw new Error("bestOf requires n >= 2");let u=this.generateOperationId(),l=e.timeoutMs??this.config.timeoutMs,i=this.getFiles(n),a=s.mcpServers??this.config.mcpServers,d=s.judgeMcpServers??s.mcpServers??this.config.mcpServers,p=s.skills??this.config.skills,g=s.judgeSkills??s.skills??this.config.skills,m=s.integrations??this.config.integrations,f=s.judgeIntegrations??s.integrations??this.config.integrations,h=await Promise.all(Array.from({length:c},async(k,R)=>{let S=o?await ae(v=>this.executeBestOfCandidate({inputFiles:i,prompt:r,candidateIndex:R,operationId:u,config:s,systemPrompt:e.systemPrompt,schema:e.schema,schemaOptions:e.schemaOptions,mcpServers:a,skills:p,integrations:m,timeoutMs:l,attempt:v}),o,R):await this.executeBestOfCandidate({inputFiles:i,prompt:r,candidateIndex:R,operationId:u,config:s,systemPrompt:e.systemPrompt,schema:e.schema,schemaOptions:e.schemaOptions,mcpServers:a,skills:p,integrations:m,timeoutMs:l});return s.onCandidateComplete?.(0,R,S.status==="success"?"success":"error"),S})),b=o?await ae(k=>this.executeBestOfJudge({inputFiles:i,taskPrompt:r,candidates:h,config:s,timeoutMs:l,operationId:u,systemPrompt:e.systemPrompt,schema:e.schema,schemaOptions:e.schemaOptions,mcpServers:d,skills:g,integrations:f,attempt:k}),{...o,retryOn:void 0},0):await this.executeBestOfJudge({inputFiles:i,taskPrompt:r,candidates:h,config:s,timeoutMs:l,operationId:u,systemPrompt:e.systemPrompt,schema:e.schema,schemaOptions:e.schemaOptions,mcpServers:d,skills:g,integrations:f}),_=h.findIndex(k=>k.status==="success"),w=b.decision?.winner??(_>=0?_:0);s.onJudgeComplete?.(0,w,b.decision?.reasoning??"Judge failed to provide reasoning");let y={operationId:u,operation:"bestof-judge",tag:b.tag,sandboxId:b.sandboxId,swarmName:this.config.tag,operationName:e.name,candidateCount:c};return {winner:h[w]??h[0],winnerIndex:w,judgeReasoning:b.decision?.reasoning??"Judge failed to provide reasoning",judgeMeta:y,candidates:h}}async execute(e,n,r){let s=null,o="",c=r.tagPrefix,u={},l=null,i,a,d={...this.config.agent,...r.agent};try{s=new nn().withAgent(d).withSandbox(this.config.sandbox).withWorkspaceMode(this.config.workspaceMode).withSessionTagPrefix(r.tagPrefix),r.schema&&s.withSchema(r.schema,r.schemaOptions),r.systemPrompt&&s.withSystemPrompt(r.systemPrompt),r.mcpServers&&s.withMcpServers(r.mcpServers),r.skills?.length&&s.withSkills(r.skills),r.integrations&&s.withIntegrations(r.integrations),r.observability&&s.withObservability(r.observability),Object.keys(e).length>0&&s.withContext(e);let p=await s.run({prompt:n,timeoutMs:r.timeoutMs});o=p.sandboxId,c=s.getSessionTag()??r.tagPrefix;let g=null;try{g=await s.getOutputFiles(!0),u=g.files;}catch{}p.exitCode!==0?i=`Agent exited with code ${p.exitCode}`:r.schema?g?(l=g.data,g.error&&(i=g.error),g.rawData&&(a=g.rawData)):i="Failed to read output files from sandbox":l=u;}catch(p){if(i=p.message,s){c=s.getSessionTag()??r.tagPrefix;try{u=(await s.getOutputFiles(!0)).files;}catch{}}}finally{s&&await s.kill().catch(()=>{});}return {files:u,data:l,tag:c,sandboxId:o,error:i,rawData:a}}async executeMapItem(e,n,r,s,o,c,u=1){let l=this.getFiles(e),i=u>1?`${this.config.tag}-map-${r}-er${u-1}`:`${this.config.tag}-map-${r}`,a=this.evaluatePrompt(n,l,r);if(a instanceof Error)return this.buildErrorResult(`Prompt function threw: ${a.message}`,{operationId:s,operation:"map",tag:i,sandboxId:"",itemIndex:r});let d=o.mcpServers??this.config.mcpServers,p=o.skills??this.config.skills,g=o.integrations??this.config.integrations,m=await this.semaphore.use(()=>this.execute(l,a,{systemPrompt:o.systemPrompt,schema:o.schema,schemaOptions:o.schemaOptions,agent:o.agent,mcpServers:d,skills:p,integrations:g,tagPrefix:i,timeoutMs:c,observability:{swarmName:this.config.tag,operationName:o.name,operationId:s,operation:"map",itemIndex:r,role:"worker",errorRetry:u>1?u-1:void 0,...this.pipelineContextToObservability(o._pipelineContext)}})),f={operationId:s,operation:"map",tag:m.tag,sandboxId:m.sandboxId,swarmName:this.config.tag,operationName:o.name,itemIndex:r,errorRetry:u>1?u-1:void 0,...this.pipelineContextToMeta(o._pipelineContext)};return this.buildResult(m,f)}async executeMapItemWithVerify(e,n,r,s,o,c,u){let l=this.getFiles(e),i=`${this.config.tag}-map-${r}`,a=o.verify,d=o.mcpServers??this.config.mcpServers,p=o.skills??this.config.skills,g=o.integrations??this.config.integrations,m=this.evaluatePrompt(n,l,r);if(m instanceof Error)return this.buildErrorResult(`Prompt function threw: ${m.message}`,{operationId:s,operation:"map",tag:i,sandboxId:"",itemIndex:r});let f=async(h,b,_)=>{let w=await this.semaphore.use(()=>this.execute(l,h,{systemPrompt:o.systemPrompt,schema:o.schema,schemaOptions:o.schemaOptions,agent:o.agent,mcpServers:d,skills:p,integrations:g,tagPrefix:b,timeoutMs:c,observability:{swarmName:this.config.tag,operationName:o.name,operationId:s,operation:"map",itemIndex:r,role:"worker",verifyRetry:_&&_>1?_-1:void 0,...this.pipelineContextToObservability(o._pipelineContext)}})),y={operationId:s,operation:"map",tag:w.tag,sandboxId:w.sandboxId,swarmName:this.config.tag,operationName:o.name,itemIndex:r,verifyRetry:_&&_>1?_-1:void 0,...this.pipelineContextToMeta(o._pipelineContext)};return this.buildResult(w,y)};return this.runWithVerification(f,{originalPrompt:m,inputFiles:l,verifyConfig:a,timeoutMs:c,systemPrompt:o.systemPrompt,schema:o.schema,mcpServers:d,skills:p,integrations:g,operationId:s,baseTag:i,retry:u,itemIndex:r,operation:"map",_pipelineContext:o._pipelineContext})}async executeMapItemWithBestOf(e,n,r,s,o,c,u){let l=this.getFiles(e),i=`${this.config.tag}-map-${r}`,a=this.evaluatePrompt(n,l,r);if(a instanceof Error)return this.buildErrorResult(`Prompt function threw: ${a.message}`,{operationId:s,operation:"map",tag:i,sandboxId:"",itemIndex:r});let d=o.bestOf,p=d.n??d.taskAgents?.length;if(p===void 0||p<2)return this.buildErrorResult("bestOf requires n >= 2 or taskAgents with at least 2 elements",{operationId:s,operation:"map",tag:i,sandboxId:"",itemIndex:r});let g=o.mcpServers??this.config.mcpServers,m=d.mcpServers??g,f=d.judgeMcpServers??d.mcpServers??g,h=o.skills??this.config.skills,b=d.skills??h,_=d.judgeSkills??d.skills??h,w=o.integrations??this.config.integrations,y=d.integrations??w,k=d.judgeIntegrations??d.integrations??w,R=await Promise.all(Array.from({length:p},async(N,ee)=>{let ht=u?await ae(Hc=>this.executeBestOfCandidate({inputFiles:l,prompt:a,candidateIndex:ee,operationId:s,config:d,systemPrompt:o.systemPrompt,schema:o.schema,schemaOptions:o.schemaOptions,mcpServers:m,skills:b,integrations:y,timeoutMs:c,parentIndex:r,attempt:Hc,_pipelineContext:o._pipelineContext}),u,ee):await this.executeBestOfCandidate({inputFiles:l,prompt:a,candidateIndex:ee,operationId:s,config:d,systemPrompt:o.systemPrompt,schema:o.schema,schemaOptions:o.schemaOptions,mcpServers:m,skills:b,integrations:y,timeoutMs:c,parentIndex:r,_pipelineContext:o._pipelineContext});return d.onCandidateComplete?.(r,ee,ht.status==="success"?"success":"error"),ht})),S=u?await ae(N=>this.executeBestOfJudge({inputFiles:l,taskPrompt:a,candidates:R,config:d,timeoutMs:c,operationId:s,systemPrompt:o.systemPrompt,schema:o.schema,schemaOptions:o.schemaOptions,mcpServers:f,skills:_,integrations:k,parentIndex:r,attempt:N,_pipelineContext:o._pipelineContext}),{...u,retryOn:void 0},0):await this.executeBestOfJudge({inputFiles:l,taskPrompt:a,candidates:R,config:d,timeoutMs:c,operationId:s,systemPrompt:o.systemPrompt,schema:o.schema,schemaOptions:o.schemaOptions,mcpServers:f,skills:_,integrations:k,parentIndex:r,_pipelineContext:o._pipelineContext}),v=R.findIndex(N=>N.status==="success"),E=S.decision?.winner??(v>=0?v:0),C=R[E]??R[0];d.onJudgeComplete?.(r,E,S.decision?.reasoning??"Judge failed to provide reasoning");let P={operationId:s,operation:"bestof-judge",tag:S.tag,sandboxId:S.sandboxId,swarmName:this.config.tag,operationName:o.name,candidateCount:p,...this.pipelineContextToMeta(o._pipelineContext)};return {...C,meta:{...C.meta,operation:"map",swarmName:this.config.tag,operationName:o.name,itemIndex:r,...this.pipelineContextToMeta(o._pipelineContext)},bestOf:{winnerIndex:E,judgeReasoning:S.decision?.reasoning??"Judge failed to provide reasoning",judgeMeta:P,candidates:R}}}async executeFilterItem(e,n,r,s,o,c,u=1){let l=this.getFiles(e),i=u>1?`${this.config.tag}-filter-${r}-er${u-1}`:`${this.config.tag}-filter-${r}`,a=o.mcpServers??this.config.mcpServers,d=o.skills??this.config.skills,p=o.integrations??this.config.integrations,g=await this.semaphore.use(()=>this.execute(l,n,{systemPrompt:o.systemPrompt,schema:o.schema,schemaOptions:o.schemaOptions,agent:o.agent,mcpServers:a,skills:d,integrations:p,tagPrefix:i,timeoutMs:c,observability:{swarmName:this.config.tag,operationName:o.name,operationId:s,operation:"filter",itemIndex:r,role:"worker",errorRetry:u>1?u-1:void 0,...this.pipelineContextToObservability(o._pipelineContext)}})),m={operationId:s,operation:"filter",tag:g.tag,sandboxId:g.sandboxId,swarmName:this.config.tag,operationName:o.name,itemIndex:r,errorRetry:u>1?u-1:void 0,...this.pipelineContextToMeta(o._pipelineContext)};return this.buildResult(g,m,l)}async executeFilterItemWithVerify(e,n,r,s,o,c,u){let l=this.getFiles(e),i=`${this.config.tag}-filter-${r}`,a=o.verify,d=o.mcpServers??this.config.mcpServers,p=o.skills??this.config.skills,g=o.integrations??this.config.integrations,m=async(f,h,b)=>{let _=await this.semaphore.use(()=>this.execute(l,f,{systemPrompt:o.systemPrompt,schema:o.schema,schemaOptions:o.schemaOptions,agent:o.agent,mcpServers:d,skills:p,integrations:g,tagPrefix:h,timeoutMs:c,observability:{swarmName:this.config.tag,operationName:o.name,operationId:s,operation:"filter",itemIndex:r,role:"worker",verifyRetry:b&&b>1?b-1:void 0,...this.pipelineContextToObservability(o._pipelineContext)}})),w={operationId:s,operation:"filter",tag:_.tag,sandboxId:_.sandboxId,swarmName:this.config.tag,operationName:o.name,itemIndex:r,verifyRetry:b&&b>1?b-1:void 0,...this.pipelineContextToMeta(o._pipelineContext)};return this.buildResult(_,w,l)};return this.runWithVerification(m,{originalPrompt:n,inputFiles:l,verifyConfig:a,timeoutMs:c,systemPrompt:o.systemPrompt,schema:o.schema,mcpServers:d,skills:p,integrations:g,operationId:s,baseTag:i,retry:u,itemIndex:r,operation:"filter",_pipelineContext:o._pipelineContext})}async executeBestOfCandidate(e){let{inputFiles:n,prompt:r,candidateIndex:s,operationId:o,config:c,timeoutMs:u,parentIndex:l,attempt:i=1,_pipelineContext:a}=e,d=l!==void 0?`${this.config.tag}-map-${l}-bestof-cand-${s}`:`${this.config.tag}-bestof-cand-${s}`,p=i>1?`${d}-er${i-1}`:d,g=await this.semaphore.use(()=>this.execute(n,r,{systemPrompt:e.systemPrompt,schema:e.schema,schemaOptions:e.schemaOptions,agent:c.taskAgents?.[s],mcpServers:e.mcpServers,skills:e.skills,integrations:e.integrations,tagPrefix:p,timeoutMs:u,observability:{swarmName:this.config.tag,operationId:o,operation:"map",itemIndex:l,role:"candidate",candidateIndex:s,errorRetry:i>1?i-1:void 0,...this.pipelineContextToObservability(a)}})),m={operationId:o,operation:"bestof-cand",tag:g.tag,sandboxId:g.sandboxId,swarmName:this.config.tag,itemIndex:s,errorRetry:i>1?i-1:void 0,candidateIndex:s,...this.pipelineContextToMeta(a)};return this.buildResult(g,m)}buildJudgeContext(e){let n=this.buildEvaluatorContext({inputFiles:e.inputFiles,taskPrompt:e.taskPrompt,systemPrompt:e.systemPrompt,schema:e.schema});return e.candidates.forEach((r,s)=>{r.status==="error"&&(n[`candidate_${s}/_failed.txt`]=`STATUS: FAILED
667
672
 
668
- Error: ${r.error??"Unknown error"}`),Object.entries(r.files).forEach(([a,d])=>{n[`candidate_${s}/${a}`]=d;});}),n}async executeBestOfJudge(e){let{candidates:n,config:r,timeoutMs:s,operationId:a,parentIndex:d,attempt:u=1,_pipelineContext:c}=e,i=d!==void 0?`${this.config.tag}-map-${d}-bestof-judge`:`${this.config.tag}-bestof-judge`,o=u>1?`${i}-er${u-1}`:i,l=this.buildJudgeContext({inputFiles:e.inputFiles,taskPrompt:e.taskPrompt,candidates:n,systemPrompt:e.systemPrompt,schema:e.schema}),p=mn(l),g=de(Kr,{candidateCount:String(n.length),criteria:r.judgeCriteria,fileTree:p}),m=zod.z.object({winner:zod.z.number().min(0).max(n.length-1),reasoning:zod.z.string()}),h=await this.semaphore.use(()=>this.execute(l,ao,{systemPrompt:g,schema:m,agent:r.judgeAgent,mcpServers:e.mcpServers,skills:e.skills,integrations:e.integrations,tagPrefix:o,timeoutMs:s,observability:{swarmName:this.config.tag,operationId:a,operation:"map",itemIndex:d,role:"judge",errorRetry:u>1?u-1:void 0,...this.pipelineContextToObservability(c)}})),f=null;if(h.data&&!h.error)f=h.data;else if(h.rawData)try{let y=JSON.parse(h.rawData);console.warn(`Judge returned invalid winner ${y.winner}, defaulting to candidate 0`),f={winner:0,reasoning:y.reasoning??"Judge failed to provide reasoning"};}catch{console.warn(`Judge validation failed: ${h.error}`);}return {status:f?"success":"error",decision:f,tag:h.tag,sandboxId:h.sandboxId,error:f?void 0:"Judge failed to produce valid decision"}}static DEFAULT_VERIFY_MAX_ATTEMPTS=3;static VerifyDecisionSchema=zod.z.object({passed:zod.z.boolean(),reasoning:zod.z.string(),feedback:zod.z.string().optional()});buildVerifyContext(e){let n=this.buildEvaluatorContext({inputFiles:e.inputFiles,taskPrompt:e.taskPrompt,systemPrompt:e.systemPrompt,schema:e.schema});return Object.entries(e.outputFiles).forEach(([r,s])=>{n[`worker_output/${r}`]=s;}),n}async executeVerify(e){let{config:n,timeoutMs:r,operationId:s,workerTag:a,retryAttempt:d=1,operation:u,itemIndex:c,attemptIndex:i,_pipelineContext:o}=e,l=d>1?`${a}-verifier-er${d-1}`:`${a}-verifier`,p=n.verifierMcpServers??e.mcpServers,g=n.verifierSkills??e.skills,m=n.verifierIntegrations??e.integrations,h=this.buildVerifyContext({inputFiles:e.inputFiles,taskPrompt:e.taskPrompt,outputFiles:e.outputFiles,systemPrompt:e.systemPrompt,schema:e.schema}),f=mn(h),y=de(Vr,{criteria:n.criteria,fileTree:f}),b=await this.semaphore.use(()=>this.execute(h,lo,{systemPrompt:y,schema:t.VerifyDecisionSchema,agent:n.verifierAgent,mcpServers:p,skills:g,integrations:m,tagPrefix:l,timeoutMs:r,observability:{swarmName:this.config.tag,operationId:s,operation:u,itemIndex:c,role:"verifier",verifyRetry:i&&i>1?i-1:void 0,errorRetry:d>1?d-1:void 0,...this.pipelineContextToObservability(o)}})),_=null;if(b.data&&!b.error)_=b.data;else if(b.rawData)try{let w=JSON.parse(b.rawData);_={passed:!!w.passed,reasoning:w.reasoning??"Verification completed",feedback:w.feedback};}catch{console.warn(`Verify validation failed: ${b.error}`);}return {status:_?"success":"error",decision:_,tag:b.tag,sandboxId:b.sandboxId,error:_?void 0:"Verifier failed to produce valid decision"}}static buildRetryPromptWithFeedback(e,n){return de(Gr,{originalPrompt:e,feedback:n})}async runWithVerification(e,n){let{originalPrompt:r,inputFiles:s,verifyConfig:a,timeoutMs:d,operationId:u,baseTag:c,retry:i,itemIndex:o=0,operation:l,_pipelineContext:p}=n,g=a.maxAttempts??t.DEFAULT_VERIFY_MAX_ATTEMPTS,m=r,h=null,f=0;for(;f<g;){f++;let b=f>1?`${c}-vr${f-1}`:c,_=i?await G(v=>e(m,v>1?`${b}-er${v-1}`:b,f),i,o):await e(m,b,f);if(a.onWorkerComplete?.(o,f,_.status==="error"?"error":"success"),_.status==="error")return _;h=_;let w=i?await G(v=>this.executeVerify({inputFiles:s,outputFiles:_.files,taskPrompt:m,config:a,timeoutMs:d,systemPrompt:n.systemPrompt,schema:n.schema,mcpServers:n.mcpServers,skills:n.skills,integrations:n.integrations,operationId:u,workerTag:b,retryAttempt:v,operation:l,itemIndex:o,attemptIndex:f,_pipelineContext:p}),{...i,retryOn:void 0}):await this.executeVerify({inputFiles:s,outputFiles:_.files,taskPrompt:m,config:a,timeoutMs:d,systemPrompt:n.systemPrompt,schema:n.schema,mcpServers:n.mcpServers,skills:n.skills,integrations:n.integrations,operationId:u,workerTag:b,operation:l,itemIndex:o,attemptIndex:f,_pipelineContext:p}),S={operationId:u,operation:"verify",tag:w.tag,sandboxId:w.sandboxId,swarmName:this.config.tag,attempts:f,...this.pipelineContextToMeta(p)};if(a.onVerifierComplete?.(o,f,w.decision?.passed??false,w.decision?.feedback),w.decision?.passed)return {..._,verify:{passed:true,reasoning:w.decision.reasoning,verifyMeta:S,attempts:f}};if(f<g){let v=w.decision?.feedback??w.decision?.reasoning??"Output did not meet criteria";m=t.buildRetryPromptWithFeedback(r,v);}}let y=f>1?`${c}-vr${f-1}`:c;return {...h,status:"error",verify:{passed:false,reasoning:"Max verification retries exceeded",verifyMeta:{operationId:u,operation:"verify",tag:`${y}-verifier`,sandboxId:"",swarmName:this.config.tag,attempts:f,...this.pipelineContextToMeta(p)},attempts:f}}}generateOperationId(){return crypto.randomBytes(8).toString("hex")}pipelineContextToObservability(e){return e?{pipelineRunId:e.pipelineRunId,pipelineStepIndex:e.pipelineStepIndex}:{}}pipelineContextToMeta(e){return {pipelineRunId:e?.pipelineRunId,pipelineStepIndex:e?.pipelineStepIndex}}evaluatePrompt(e,n,r){if(typeof e=="string")return e;try{return e(n,r)}catch(s){return s}}buildEvaluatorContext(e){let n={};return e.systemPrompt&&(n["worker_task/system_prompt.txt"]=e.systemPrompt),n["worker_task/user_prompt.txt"]=e.taskPrompt,e.schema&&(n["worker_task/schema.json"]=Q(e.schema)?Pe(e.schema):Ae(e.schema)),Object.entries(e.inputFiles).forEach(([r,s])=>{n[`worker_task/input/${r}`]=s;}),n}isSwarmResult(e){return typeof e=="object"&&e!==null&&ke in e&&e[ke]===true}getFiles(e){if(this.isSwarmResult(e)){let n={...e.files};return n["result.json"]&&(n["data.json"]=n["result.json"],delete n["result.json"]),n}return e}getIndex(e,n){return this.isSwarmResult(e)?e.meta.itemIndex:n}buildResult(e,n,r){let s=r??e.files;return e.error?{[ke]:true,status:"error",data:null,files:s,meta:n,error:e.error,rawData:e.rawData}:{[ke]:true,status:"success",data:e.data,files:s,meta:n}}buildErrorResult(e,n){return {[ke]:true,status:"error",data:null,files:{},meta:n,error:e}}};var Nn=class t{swarm;steps;events;constructor(e,n=[],r={}){this.swarm=e,this.steps=n,this.events=r;}map(e){return new t(this.swarm,[...this.steps,{type:"map",config:e}],this.events)}filter(e){return new t(this.swarm,[...this.steps,{type:"filter",config:e}],this.events)}reduce(e){return new jn(this.swarm,[...this.steps,{type:"reduce",config:e}],this.events)}on(e,n){if(typeof e=="string"){let r=`on${e.charAt(0).toUpperCase()}${e.slice(1)}`;return new t(this.swarm,this.steps,{...this.events,[r]:n})}return new t(this.swarm,this.steps,{...this.events,...e})}async run(e){let n=crypto.randomBytes(8).toString("hex"),r=[],s=e,a=Date.now();for(let u=0;u<this.steps.length;u++){let c=this.steps[u],i=c.config.name,o=Date.now();this.events.onStepStart?.({type:c.type,index:u,name:i,itemCount:s.length});let l={pipelineRunId:n,pipelineStepIndex:u};try{let p=await this.executeStep(c,s,u,i,l),g=Date.now()-o;if(r.push({type:c.type,index:u,durationMs:g,results:p.output}),this.events.onStepComplete?.({type:c.type,index:u,name:i,durationMs:g,successCount:p.successCount,errorCount:p.errorCount,filteredCount:p.filteredCount}),c.type==="reduce")return {pipelineRunId:n,steps:r,output:p.output,totalDurationMs:Date.now()-a};s=p.nextItems;}catch(p){throw this.events.onStepError?.({type:c.type,index:u,name:i,error:p instanceof Error?p:new Error(String(p))}),p}}let d=r[r.length-1];return {pipelineRunId:n,steps:r,output:d?.results??[],totalDurationMs:Date.now()-a}}async executeStep(e,n,r,s,a){if(e.type==="map"){let c=e.config,i=await this.swarm.map({items:n,...c,_pipelineContext:a,retry:this.wrapRetry(c.retry,r,s),verify:this.wrapVerify(c.verify,r,s),bestOf:this.wrapBestOf(c.bestOf,r,s)});return {output:[...i],nextItems:i.success,successCount:i.success.length,errorCount:i.error.length,filteredCount:0}}if(e.type==="filter"){let c=e.config,i=await this.swarm.filter({items:n,...c,_pipelineContext:a,retry:this.wrapRetry(c.retry,r,s),verify:this.wrapVerify(c.verify,r,s)}),o=c.emit??"success",l=o==="success"?i.success:o==="filtered"?i.filtered:[...i.success,...i.filtered];return {output:[...i],nextItems:l,successCount:i.success.length,errorCount:i.error.length,filteredCount:i.filtered.length}}let d=e.config,u=await this.swarm.reduce({items:n,...d,_pipelineContext:a,retry:this.wrapRetry(d.retry,r,s),verify:this.wrapVerify(d.verify,r,s)});return {output:u,nextItems:[],successCount:u.status==="success"?1:0,errorCount:u.status==="error"?1:0,filteredCount:0}}wrapRetry(e,n,r){if(e)return {...e,onItemRetry:(s,a,d)=>{e.onItemRetry?.(s,a,d),this.events.onItemRetry?.({stepIndex:n,stepName:r,itemIndex:s,attempt:a,error:d});}}}wrapVerify(e,n,r){if(e)return {...e,onWorkerComplete:(s,a,d)=>{e.onWorkerComplete?.(s,a,d),this.events.onWorkerComplete?.({stepIndex:n,stepName:r,itemIndex:s,attempt:a,status:d});},onVerifierComplete:(s,a,d,u)=>{e.onVerifierComplete?.(s,a,d,u),this.events.onVerifierComplete?.({stepIndex:n,stepName:r,itemIndex:s,attempt:a,passed:d,feedback:u});}}}wrapBestOf(e,n,r){if(e)return {...e,onCandidateComplete:(s,a,d)=>{e.onCandidateComplete?.(s,a,d),this.events.onCandidateComplete?.({stepIndex:n,stepName:r,itemIndex:s,candidateIndex:a,status:d});},onJudgeComplete:(s,a,d)=>{e.onJudgeComplete?.(s,a,d),this.events.onJudgeComplete?.({stepIndex:n,stepName:r,itemIndex:s,winnerIndex:a,reasoning:d});}}}},jn=class t extends Nn{constructor(e,n,r){super(e,n,r);}on(e,n){if(typeof e=="string"){let r=`on${e.charAt(0).toUpperCase()}${e.slice(1)}`;return new t(this.swarm,this.steps,{...this.events,[r]:n})}return new t(this.swarm,this.steps,{...this.events,...e})}map(){throw new Error("Cannot add steps after reduce")}filter(){throw new Error("Cannot add steps after reduce")}reduce(){throw new Error("Cannot add steps after reduce")}};var Fs=class extends Error{feature;provider;reason;constructor(e,n,r){super(`${n} does not support ${e}${r?`: ${r}`:""}`),this.name="SandboxFeatureUnsupportedError",this.feature=e,this.provider=n,this.reason=r;}},Bs=class extends Error{path;provider;constructor(e,n){super(`${n}: no such file or directory: ${e}`),this.name="SandboxPathNotFoundError",this.path=e,this.provider=n;}},Ns=class extends Error{sandboxId;provider;state;constructor(e,n,r){super(`${n} sandbox ${e} is not running (${r}); inspect never starts or resumes a sandbox`),this.name="SandboxNotRunningError",this.sandboxId=e,this.provider=n,this.state=r;}};function js(t,e){return !!t&&typeof t=="object"&&t.name===e}function Xp(t){return js(t,"SandboxFeatureUnsupportedError")}function Qp(t){return js(t,"SandboxPathNotFoundError")}function Zp(t){return js(t,"SandboxNotRunningError")}var ig=6e5,og=5e3;function kl(t,e,n){let r=e??n;if(!Number.isFinite(r)||r<=0)throw new Error(`${t} must be a positive number`);return r}function ag(t){let e=t?.apiKey||process.env[O];if(!e)throw new Error(`sessions() requires an API key. Set ${O} or pass { apiKey } in config.`);let n=t?.dashboardUrl||T;async function r(i,o){let l=await fetch(`${n}${i}`,{...o,headers:{Authorization:`Bearer ${e}`,...o?.headers}});if(!l.ok){let p=await l.text().catch(()=>"");throw new Error(`Dashboard API error (${l.status}): ${p||l.statusText}`)}return l}function s(i){return {id:i.id,tag:i.tag,agent:i.agent,model:i.model||null,reasoningEffort:typeof i.reasoningEffort=="string"?i.reasoningEffort:null,provider:i.provider,org:typeof i.org=="string"?i.org:null,sandboxId:i.sandboxId||null,state:i.isEnded?"ended":"live",runtimeStatus:i.runtimeStatus||"unknown",cost:typeof i.cost=="number"?i.cost:null,usage:Fe(i.usage),createdAt:i.createdAt,endedAt:i.endedAt||null,stepCount:i.stepCount||0,toolStats:i.toolStats||null,visibility:i.visibility==="LINK"?"LINK":"PRIVATE"}}function a(i,o){if(i.status!=="ready")throw new Error(`Browser replay is not ready (status: ${String(i.status||"unknown")})`);if(typeof i.replayUrl!="string"||typeof i.downloadUrl!="string")throw new Error("Browser replay response missing replayUrl or downloadUrl");return {sessionId:i.sessionId||o,status:"ready",replayUrl:i.replayUrl,downloadUrl:i.downloadUrl,suggestedStartSeconds:typeof i.suggestedStartSeconds=="number"?i.suggestedStartSeconds:void 0,sizeBytes:typeof i.sizeBytes=="number"?i.sizeBytes:void 0,readyAt:typeof i.readyAt=="string"?i.readyAt:void 0}}let d=i=>new Promise(o=>setTimeout(o,i));function u(i){if(i==null)return [];if(!Array.isArray(i))throw new Error("Session transcript response gatewayCalls is not a list");return i.map((o,l)=>{let p=o&&typeof o=="object"&&!Array.isArray(o)?o:null;if(!p||Sn({data:p})===null)throw new Error(`Session transcript response gatewayCalls[${l}] is not a gateway usage event`);return p})}async function c(i,o){let l=new URLSearchParams;o?.since!=null&&l.set("since",String(o.since));let p=l.toString(),m=await(await r(`/api/sessions/${encodeURIComponent(i)}/events${p?`?${p}`:""}`)).json(),h=m.session;if(!h||typeof h!="object"||Array.isArray(h))throw new Error("Session transcript response missing session");let f=m.events||[];return {session:s(h),events:f,total:typeof m.total=="number"?m.total:(o?.since??0)+f.length,gatewayCalls:u(m.gatewayCalls),storedAt:wt(m.storedAt,f.length,"Session transcript response")}}return {async list(i){let o=new URLSearchParams({paginationMode:"cursor",pageSize:String(Math.min(i?.limit??20,200)),paginated:"true"});if(i?.scope&&o.set("scope",i.scope),i?.cursor&&o.set("cursor",i.cursor),i?.state&&i.state!=="all"&&o.set("state",i.state),i?.agent&&o.set("agent",i.agent),i?.tagPrefix&&o.set("tagPrefix",i.tagPrefix),i?.scope&&o.set("scope",i.scope),i?.sort){let g={newest:"desc",oldest:"asc",cost:"desc"};o.set("sortDirection",g[i.sort]),i.sort==="cost"?o.set("sortField","cost"):o.set("sortField","timestamp");}let p=await(await r(`/api/sessions?${o}`)).json();return {items:(p.items||[]).map(s),nextCursor:p.nextCursor||null,hasMore:!!p.hasMore}},async get(i){let l=await(await r(`/api/sessions/${encodeURIComponent(i)}`)).json();return s(l)},async events(i,o){return (await c(i,o)).events},transcript:c,async download(i,o){let g=(await(await r(`/api/sessions/${encodeURIComponent(i)}`)).json()).tag||i,m=await fetch(`${n}/api/sessions/${encodeURIComponent(i)}/download`,{headers:{Authorization:`Bearer ${e}`},redirect:"follow"});if(!m.ok){let b=await m.text().catch(()=>"");throw new Error(`Download failed (${m.status}): ${b||m.statusText}`)}let h=o?.to||process.cwd();await promises.mkdir(h,{recursive:true});let f=Z.join(h,`${g}.jsonl`);if(!m.body)throw new Error("Download response has no body");let y=stream.Readable.fromWeb(m.body);return await promises$1.pipeline(y,ee.createWriteStream(f)),f},async browserReplay(i,o){let l=kl("timeoutMs",o?.timeoutMs,ig),p=kl("intervalMs",o?.intervalMs,og),g=Date.now()+l,m=`/api/sessions/${encodeURIComponent(i)}/browser-replay`;for(;;){let h=g-Date.now();if(h<=0)throw new Error(`Browser replay timed out after ${l}ms`);let f;try{f=await fetch(`${n}${m}`,{headers:{Authorization:`Bearer ${e}`,accept:"application/json"},signal:AbortSignal.timeout(Math.max(1,h))});}catch(b){let _=b.name;throw _==="AbortError"||_==="TimeoutError"?new Error(`Browser replay timed out after ${l}ms`):b}let y={};if(f.ok)y=await f.json();else {let b=await f.text().catch(()=>"");throw new Error(`Dashboard API error (${f.status}): ${b||f.statusText}`)}if(y.status==="ready")return a(y,i);if(y.status==="failed"){let b=typeof y.error=="string"?y.error:"unknown error";throw new Error(`Browser replay failed: ${b}`)}if(Date.now()>=g)throw new Error(`Browser replay timed out after ${l}ms`);await d(Math.min(p,Math.max(0,g-Date.now())));}},async share(i,o){let l=await r(`/api/sessions/${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 r(`/api/sessions/${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 r(`/api/sessions/${encodeURIComponent(i)}/shares`);return q(await o.json())}}}Object.defineProperty(exports,"E2BProvider",{enumerable:true,get:function(){return e2b.E2BProvider}});Object.defineProperty(exports,"createE2BProvider",{enumerable:true,get:function(){return e2b.createE2BProvider}});Object.defineProperty(exports,"DaytonaProvider",{enumerable:true,get:function(){return daytona.DaytonaProvider}});Object.defineProperty(exports,"createDaytonaProvider",{enumerable:true,get:function(){return daytona.createDaytonaProvider}});Object.defineProperty(exports,"ModalProvider",{enumerable:true,get:function(){return modal.ModalProvider}});Object.defineProperty(exports,"createModalProvider",{enumerable:true,get:function(){return modal.createModalProvider}});exports.AGENT_EFFORT_SUPPORT_VALUES=wa;exports.AGENT_REGISTRY=K;exports.AGENT_TYPES=xl;exports.ANALYSIS_ARTIFACT_STREAMS=_a;exports.ANALYSIS_STATUSES=ma;exports.Agent=Ot;exports.BINARY_EFFORT_VALUES=Qs;exports.BROWSER_ACTIONBOOK_PROMPT=Jr;exports.BROWSER_LOGIN_MCP_SERVER_NAME=is;exports.BrowserCredentialsClient=bn;exports.BrowserProfilesClient=Bn;exports.CHECK_STATUSES=fa;exports.DEFAULT_HARNESS_TRIAL_LAYOUT=hs;exports.DEFAULT_REASONING_EFFORT=Zs;exports.EVAL_SANDBOX_PROVIDERS=ua;exports.Evolve=Mt;exports.EvolveApiError=L;exports.EvolveConfigError=P;exports.EvolveDigestMismatchError=Rt;exports.EvolveIncompleteDownloadError=Et;exports.GATEWAY_TRACE_SEQ_BASE=vn;exports.HARNESS_TRIAL_LAYOUTS=Rn;exports.HOSTED_ERROR_CODES=ms;exports.ImportSettleError=xt;exports.JOB_LIST_KINDS=ga;exports.JOB_LIST_SCOPES=pa;exports.JUDGE_PROMPT=Kr;exports.MANAGED_SANDBOX_PROVIDERS=xe;exports.MAX_SKILL_BYTES=Sr;exports.MAX_SKILL_FILES=vr;exports.NoActiveVersionError=In;exports.Pipeline=Nn;exports.REASONING_EFFORTS=Xs;exports.RETRY_FEEDBACK_PROMPT=Gr;exports.SANDBOX_LOG_STREAMS=ba;exports.SCHEMA_PROMPT=io;exports.SKILL_FILE_NAME=ce;exports.SUPPORTED_RUN_OPTIONS=Cl;exports.SWARM_RESULT_BRAND=ke;exports.SYSTEM_PROMPT=so;exports.SandboxFeatureUnsupportedError=Fs;exports.SandboxNotRunningError=Ns;exports.SandboxPathNotFoundError=Bs;exports.Semaphore=ze;exports.SkillRefError=W;exports.SkillResolveError=j;exports.Swarm=$s;exports.SwarmResultList=He;exports.TASK_LINKED_BY=wn;exports.TASK_LINK_REASONS=kn;exports.TRIAL_ARTIFACT_STREAMS=ya;exports.TRIAL_STATUSES=da;exports.TerminalPipeline=jn;exports.VALIDATION_PRESETS=Kn;exports.VERIFY_PROMPT=Vr;exports.WORKSPACE_PROMPT=no;exports.WORKSPACE_SWE_PROMPT=ro;exports.agents=za;exports.analyses=Qa;exports.analysisEvolveRecord=xa;exports.applyTemplate=de;exports.assembleTrialTree=Sa;exports.auth=vp;exports.browserCredentials=os;exports.browserProfiles=Ls;exports.buildWorkerSystemPrompt=qr;exports.checkEvolveRecord=Ra;exports.checks=Za;exports.computeSkillDigest=xr;exports.createAgentParser=ye;exports.createClaudeParser=Wt;exports.createCodexParser=Yt;exports.createDroidParser=Xt;exports.createGeminiParser=Qt;exports.datasets=qa;exports.executeWithRetry=G;exports.expandPath=N;exports.gatewayUsageOf=Sn;exports.getAgentConfig=V;exports.getMcpSettingsDir=ie;exports.getMcpSettingsPath=se;exports.harborCopyPath=ws;exports.harnessEffortVocabulary=Rl;exports.harnessTrialLayout=ys;exports.homeRelativePath=bs;exports.hosted=Rp;exports.isAgentWorkUpdate=si;exports.isHostedErrorCode=xn;exports.isSandboxFeatureUnsupportedError=Xp;exports.isSandboxNotRunningError=Zp;exports.isSandboxPathNotFoundError=Qp;exports.isValidAgentType=Yn;exports.isZodSchema=Q;exports.jobEvolveRecord=va;exports.jobs=Wa;exports.jsonSchemaToString=Ae;exports.managedSandbox=id;exports.managedSecrets=Os;exports.meta=tl;exports.mountSkills=Or;exports.orgs=Dn;exports.parseNdjsonLine=lc;exports.parseNdjsonOutput=cc;exports.parseQwenOutput=mi;exports.parseSkillRef=Er;exports.passAtK=ha;exports.pinSkillRef=Hc;exports.placeHomeObject=_s;exports.readLocalDir=Ai;exports.resolveDefaultSandbox=gn;exports.resolveSkillSha=Pr;exports.resolveSkills=Ir;exports.resolveStorageConfig=hn;exports.saveLocalDir=Ii;exports.sessions=ag;exports.skillCloneUrl=Tr;exports.skillDisplayUrl=Te;exports.skills=Ha;exports.storage=eu;exports.taskCheckEvolveRecord=Ca;exports.trialEvolveRecord=ks;exports.trials=Ya;exports.writeClaudeMcpConfig=Nt;exports.writeCodexMcpConfig=qt;exports.writeDroidGatewaySettings=Gt;exports.writeDroidMcpConfig=Vt;exports.writeGeminiMcpConfig=jt;exports.writeMcpConfig=or;exports.writeQwenMcpConfig=Jt;exports.zodSchemaToJson=Pe;
673
+ Error: ${r.error??"Unknown error"}`),Object.entries(r.files).forEach(([o,c])=>{n[`candidate_${s}/${o}`]=c;});}),n}async executeBestOfJudge(e){let{candidates:n,config:r,timeoutMs:s,operationId:o,parentIndex:c,attempt:u=1,_pipelineContext:l}=e,i=c!==void 0?`${this.config.tag}-map-${c}-bestof-judge`:`${this.config.tag}-bestof-judge`,a=u>1?`${i}-er${u-1}`:i,d=this.buildJudgeContext({inputFiles:e.inputFiles,taskPrompt:e.taskPrompt,candidates:n,systemPrompt:e.systemPrompt,schema:e.schema}),p=or(d),g=Re(Hs,{candidateCount:String(n.length),criteria:r.judgeCriteria,fileTree:p}),m=zod.z.object({winner:zod.z.number().min(0).max(n.length-1),reasoning:zod.z.string()}),f=await this.semaphore.use(()=>this.execute(d,Ia,{systemPrompt:g,schema:m,agent:r.judgeAgent,mcpServers:e.mcpServers,skills:e.skills,integrations:e.integrations,tagPrefix:a,timeoutMs:s,observability:{swarmName:this.config.tag,operationId:o,operation:"map",itemIndex:c,role:"judge",errorRetry:u>1?u-1:void 0,...this.pipelineContextToObservability(l)}})),h=null;if(f.data&&!f.error)h=f.data;else if(f.rawData)try{let b=JSON.parse(f.rawData);console.warn(`Judge returned invalid winner ${b.winner}, defaulting to candidate 0`),h={winner:0,reasoning:b.reasoning??"Judge failed to provide reasoning"};}catch{console.warn(`Judge validation failed: ${f.error}`);}return {status:h?"success":"error",decision:h,tag:f.tag,sandboxId:f.sandboxId,error:h?void 0:"Judge failed to produce valid decision"}}static DEFAULT_VERIFY_MAX_ATTEMPTS=3;static VerifyDecisionSchema=zod.z.object({passed:zod.z.boolean(),reasoning:zod.z.string(),feedback:zod.z.string().optional()});buildVerifyContext(e){let n=this.buildEvaluatorContext({inputFiles:e.inputFiles,taskPrompt:e.taskPrompt,systemPrompt:e.systemPrompt,schema:e.schema});return Object.entries(e.outputFiles).forEach(([r,s])=>{n[`worker_output/${r}`]=s;}),n}async executeVerify(e){let{config:n,timeoutMs:r,operationId:s,workerTag:o,retryAttempt:c=1,operation:u,itemIndex:l,attemptIndex:i,_pipelineContext:a}=e,d=c>1?`${o}-verifier-er${c-1}`:`${o}-verifier`,p=n.verifierMcpServers??e.mcpServers,g=n.verifierSkills??e.skills,m=n.verifierIntegrations??e.integrations,f=this.buildVerifyContext({inputFiles:e.inputFiles,taskPrompt:e.taskPrompt,outputFiles:e.outputFiles,systemPrompt:e.systemPrompt,schema:e.schema}),h=or(f),b=Re(qs,{criteria:n.criteria,fileTree:h}),_=await this.semaphore.use(()=>this.execute(f,Oa,{systemPrompt:b,schema:t.VerifyDecisionSchema,agent:n.verifierAgent,mcpServers:p,skills:g,integrations:m,tagPrefix:d,timeoutMs:r,observability:{swarmName:this.config.tag,operationId:s,operation:u,itemIndex:l,role:"verifier",verifyRetry:i&&i>1?i-1:void 0,errorRetry:c>1?c-1:void 0,...this.pipelineContextToObservability(a)}})),w=null;if(_.data&&!_.error)w=_.data;else if(_.rawData)try{let y=JSON.parse(_.rawData);w={passed:!!y.passed,reasoning:y.reasoning??"Verification completed",feedback:y.feedback};}catch{console.warn(`Verify validation failed: ${_.error}`);}return {status:w?"success":"error",decision:w,tag:_.tag,sandboxId:_.sandboxId,error:w?void 0:"Verifier failed to produce valid decision"}}static buildRetryPromptWithFeedback(e,n){return Re(Ws,{originalPrompt:e,feedback:n})}async runWithVerification(e,n){let{originalPrompt:r,inputFiles:s,verifyConfig:o,timeoutMs:c,operationId:u,baseTag:l,retry:i,itemIndex:a=0,operation:d,_pipelineContext:p}=n,g=o.maxAttempts??t.DEFAULT_VERIFY_MAX_ATTEMPTS,m=r,f=null,h=0;for(;h<g;){h++;let _=h>1?`${l}-vr${h-1}`:l,w=i?await ae(R=>e(m,R>1?`${_}-er${R-1}`:_,h),i,a):await e(m,_,h);if(o.onWorkerComplete?.(a,h,w.status==="error"?"error":"success"),w.status==="error")return w;f=w;let y=i?await ae(R=>this.executeVerify({inputFiles:s,outputFiles:w.files,taskPrompt:m,config:o,timeoutMs:c,systemPrompt:n.systemPrompt,schema:n.schema,mcpServers:n.mcpServers,skills:n.skills,integrations:n.integrations,operationId:u,workerTag:_,retryAttempt:R,operation:d,itemIndex:a,attemptIndex:h,_pipelineContext:p}),{...i,retryOn:void 0}):await this.executeVerify({inputFiles:s,outputFiles:w.files,taskPrompt:m,config:o,timeoutMs:c,systemPrompt:n.systemPrompt,schema:n.schema,mcpServers:n.mcpServers,skills:n.skills,integrations:n.integrations,operationId:u,workerTag:_,operation:d,itemIndex:a,attemptIndex:h,_pipelineContext:p}),k={operationId:u,operation:"verify",tag:y.tag,sandboxId:y.sandboxId,swarmName:this.config.tag,attempts:h,...this.pipelineContextToMeta(p)};if(o.onVerifierComplete?.(a,h,y.decision?.passed??false,y.decision?.feedback),y.decision?.passed)return {...w,verify:{passed:true,reasoning:y.decision.reasoning,verifyMeta:k,attempts:h}};if(h<g){let R=y.decision?.feedback??y.decision?.reasoning??"Output did not meet criteria";m=t.buildRetryPromptWithFeedback(r,R);}}let b=h>1?`${l}-vr${h-1}`:l;return {...f,status:"error",verify:{passed:false,reasoning:"Max verification retries exceeded",verifyMeta:{operationId:u,operation:"verify",tag:`${b}-verifier`,sandboxId:"",swarmName:this.config.tag,attempts:h,...this.pipelineContextToMeta(p)},attempts:h}}}generateOperationId(){return crypto.randomBytes(8).toString("hex")}pipelineContextToObservability(e){return e?{pipelineRunId:e.pipelineRunId,pipelineStepIndex:e.pipelineStepIndex}:{}}pipelineContextToMeta(e){return {pipelineRunId:e?.pipelineRunId,pipelineStepIndex:e?.pipelineStepIndex}}evaluatePrompt(e,n,r){if(typeof e=="string")return e;try{return e(n,r)}catch(s){return s}}buildEvaluatorContext(e){let n={};return e.systemPrompt&&(n["worker_task/system_prompt.txt"]=e.systemPrompt),n["worker_task/user_prompt.txt"]=e.taskPrompt,e.schema&&(n["worker_task/schema.json"]=me(e.schema)?Xe(e.schema):Qe(e.schema)),Object.entries(e.inputFiles).forEach(([r,s])=>{n[`worker_task/input/${r}`]=s;}),n}isSwarmResult(e){return typeof e=="object"&&e!==null&&Be in e&&e[Be]===true}getFiles(e){if(this.isSwarmResult(e)){let n={...e.files};return n["result.json"]&&(n["data.json"]=n["result.json"],delete n["result.json"]),n}return e}getIndex(e,n){return this.isSwarmResult(e)?e.meta.itemIndex:n}buildResult(e,n,r){let s=r??e.files;return e.error?{[Be]:true,status:"error",data:null,files:s,meta:n,error:e.error,rawData:e.rawData}:{[Be]:true,status:"success",data:e.data,files:s,meta:n}}buildErrorResult(e,n){return {[Be]:true,status:"error",data:null,files:{},meta:n,error:e}}};var Ir=class t{swarm;steps;events;constructor(e,n=[],r={}){this.swarm=e,this.steps=n,this.events=r;}map(e){return new t(this.swarm,[...this.steps,{type:"map",config:e}],this.events)}filter(e){return new t(this.swarm,[...this.steps,{type:"filter",config:e}],this.events)}reduce(e){return new Or(this.swarm,[...this.steps,{type:"reduce",config:e}],this.events)}on(e,n){if(typeof e=="string"){let r=`on${e.charAt(0).toUpperCase()}${e.slice(1)}`;return new t(this.swarm,this.steps,{...this.events,[r]:n})}return new t(this.swarm,this.steps,{...this.events,...e})}async run(e){let n=crypto.randomBytes(8).toString("hex"),r=[],s=e,o=Date.now();for(let u=0;u<this.steps.length;u++){let l=this.steps[u],i=l.config.name,a=Date.now();this.events.onStepStart?.({type:l.type,index:u,name:i,itemCount:s.length});let d={pipelineRunId:n,pipelineStepIndex:u};try{let p=await this.executeStep(l,s,u,i,d),g=Date.now()-a;if(r.push({type:l.type,index:u,durationMs:g,results:p.output}),this.events.onStepComplete?.({type:l.type,index:u,name:i,durationMs:g,successCount:p.successCount,errorCount:p.errorCount,filteredCount:p.filteredCount}),l.type==="reduce")return {pipelineRunId:n,steps:r,output:p.output,totalDurationMs:Date.now()-o};s=p.nextItems;}catch(p){throw this.events.onStepError?.({type:l.type,index:u,name:i,error:p instanceof Error?p:new Error(String(p))}),p}}let c=r[r.length-1];return {pipelineRunId:n,steps:r,output:c?.results??[],totalDurationMs:Date.now()-o}}async executeStep(e,n,r,s,o){if(e.type==="map"){let l=e.config,i=await this.swarm.map({items:n,...l,_pipelineContext:o,retry:this.wrapRetry(l.retry,r,s),verify:this.wrapVerify(l.verify,r,s),bestOf:this.wrapBestOf(l.bestOf,r,s)});return {output:[...i],nextItems:i.success,successCount:i.success.length,errorCount:i.error.length,filteredCount:0}}if(e.type==="filter"){let l=e.config,i=await this.swarm.filter({items:n,...l,_pipelineContext:o,retry:this.wrapRetry(l.retry,r,s),verify:this.wrapVerify(l.verify,r,s)}),a=l.emit??"success",d=a==="success"?i.success:a==="filtered"?i.filtered:[...i.success,...i.filtered];return {output:[...i],nextItems:d,successCount:i.success.length,errorCount:i.error.length,filteredCount:i.filtered.length}}let c=e.config,u=await this.swarm.reduce({items:n,...c,_pipelineContext:o,retry:this.wrapRetry(c.retry,r,s),verify:this.wrapVerify(c.verify,r,s)});return {output:u,nextItems:[],successCount:u.status==="success"?1:0,errorCount:u.status==="error"?1:0,filteredCount:0}}wrapRetry(e,n,r){if(e)return {...e,onItemRetry:(s,o,c)=>{e.onItemRetry?.(s,o,c),this.events.onItemRetry?.({stepIndex:n,stepName:r,itemIndex:s,attempt:o,error:c});}}}wrapVerify(e,n,r){if(e)return {...e,onWorkerComplete:(s,o,c)=>{e.onWorkerComplete?.(s,o,c),this.events.onWorkerComplete?.({stepIndex:n,stepName:r,itemIndex:s,attempt:o,status:c});},onVerifierComplete:(s,o,c,u)=>{e.onVerifierComplete?.(s,o,c,u),this.events.onVerifierComplete?.({stepIndex:n,stepName:r,itemIndex:s,attempt:o,passed:c,feedback:u});}}}wrapBestOf(e,n,r){if(e)return {...e,onCandidateComplete:(s,o,c)=>{e.onCandidateComplete?.(s,o,c),this.events.onCandidateComplete?.({stepIndex:n,stepName:r,itemIndex:s,candidateIndex:o,status:c});},onJudgeComplete:(s,o,c)=>{e.onJudgeComplete?.(s,o,c),this.events.onJudgeComplete?.({stepIndex:n,stepName:r,itemIndex:s,winnerIndex:o,reasoning:c});}}}},Or=class t extends Ir{constructor(e,n,r){super(e,n,r);}on(e,n){if(typeof e=="string"){let r=`on${e.charAt(0).toUpperCase()}${e.slice(1)}`;return new t(this.swarm,this.steps,{...this.events,[r]:n})}return new t(this.swarm,this.steps,{...this.events,...e})}map(){throw new Error("Cannot add steps after reduce")}filter(){throw new Error("Cannot add steps after reduce")}reduce(){throw new Error("Cannot add steps after reduce")}};var ji=class extends Error{feature;provider;reason;constructor(e,n,r){super(`${n} does not support ${e}${r?`: ${r}`:""}`),this.name="SandboxFeatureUnsupportedError",this.feature=e,this.provider=n,this.reason=r;}},Ji=class extends Error{path;provider;constructor(e,n){super(`${n}: no such file or directory: ${e}`),this.name="SandboxPathNotFoundError",this.path=e,this.provider=n;}},Ki=class extends Error{sandboxId;provider;state;constructor(e,n,r){super(`${n} sandbox ${e} is not running (${r}); inspect never starts or resumes a sandbox`),this.name="SandboxNotRunningError",this.sandboxId=e,this.provider=n,this.state=r;}};function Vi(t,e){return !!t&&typeof t=="object"&&t.name===e}function yf(t){return Vi(t,"SandboxFeatureUnsupportedError")}function bf(t){return Vi(t,"SandboxPathNotFoundError")}function _f(t){return Vi(t,"SandboxNotRunningError")}var Rf=6e5,Cf=5e3;function zc(t,e,n){let r=e??n;if(!Number.isFinite(r)||r<=0)throw new Error(`${t} must be a positive number`);return r}function Ef(t){let e=t?.apiKey||process.env[B];if(!e)throw new Error(`sessions() requires an API key. Set ${B} or pass { apiKey } in config.`);let n=t?.dashboardUrl||M;async function r(i,a){let d=await fetch(`${n}${i}`,{...a,headers:{Authorization:`Bearer ${e}`,...a?.headers}});if(!d.ok){let p=await d.text().catch(()=>"");throw new Error(`Dashboard API error (${d.status}): ${p||d.statusText}`)}return d}function s(i){return {id:i.id,tag:i.tag,agent:i.agent,model:i.model||null,reasoningEffort:typeof i.reasoningEffort=="string"?i.reasoningEffort:null,provider:i.provider,org:typeof i.org=="string"?i.org:null,sandboxId:i.sandboxId||null,state:i.isEnded?"ended":"live",runtimeStatus:i.runtimeStatus||"unknown",cost:typeof i.cost=="number"?i.cost:null,usage:it(i.usage),createdAt:i.createdAt,endedAt:i.endedAt||null,stepCount:i.stepCount||0,toolStats:i.toolStats||null,visibility:i.visibility==="LINK"?"LINK":"PRIVATE"}}function o(i,a){if(i.status!=="ready")throw new Error(`Browser replay is not ready (status: ${String(i.status||"unknown")})`);if(typeof i.replayUrl!="string"||typeof i.downloadUrl!="string")throw new Error("Browser replay response missing replayUrl or downloadUrl");return {sessionId:i.sessionId||a,status:"ready",replayUrl:i.replayUrl,downloadUrl:i.downloadUrl,suggestedStartSeconds:typeof i.suggestedStartSeconds=="number"?i.suggestedStartSeconds:void 0,sizeBytes:typeof i.sizeBytes=="number"?i.sizeBytes:void 0,readyAt:typeof i.readyAt=="string"?i.readyAt:void 0}}let c=i=>new Promise(a=>setTimeout(a,i));function u(i){if(i==null)return [];if(!Array.isArray(i))throw new Error("Session transcript response gatewayCalls is not a list");return i.map((a,d)=>{let p=a&&typeof a=="object"&&!Array.isArray(a)?a:null;if(!p||hr({data:p})===null)throw new Error(`Session transcript response gatewayCalls[${d}] is not a gateway usage event`);return p})}async function l(i,a){let d=new URLSearchParams;a?.since!=null&&d.set("since",String(a.since));let p=d.toString(),m=await(await r(`/api/sessions/${encodeURIComponent(i)}/events${p?`?${p}`:""}`)).json(),f=m.session;if(!f||typeof f!="object"||Array.isArray(f))throw new Error("Session transcript response missing session");let h=m.events||[];return {session:s(f),events:h,total:typeof m.total=="number"?m.total:(a?.since??0)+h.length,gatewayCalls:u(m.gatewayCalls),storedAt:Jt(m.storedAt,h.length,"Session transcript response")}}return {async list(i){let a=new URLSearchParams({paginationMode:"cursor",pageSize:String(Math.min(i?.limit??20,200)),paginated:"true"});if(i?.scope&&a.set("scope",i.scope),i?.cursor&&a.set("cursor",i.cursor),i?.state&&i.state!=="all"&&a.set("state",i.state),i?.agent&&a.set("agent",i.agent),i?.tagPrefix&&a.set("tagPrefix",i.tagPrefix),i?.scope&&a.set("scope",i.scope),i?.sort){let g={newest:"desc",oldest:"asc",cost:"desc"};a.set("sortDirection",g[i.sort]),i.sort==="cost"?a.set("sortField","cost"):a.set("sortField","timestamp");}let p=await(await r(`/api/sessions?${a}`)).json();return {items:(p.items||[]).map(s),nextCursor:p.nextCursor||null,hasMore:!!p.hasMore}},async get(i){let d=await(await r(`/api/sessions/${encodeURIComponent(i)}`)).json();return s(d)},async events(i,a){return (await l(i,a)).events},transcript:l,async download(i,a){let g=(await(await r(`/api/sessions/${encodeURIComponent(i)}`)).json()).tag||i,m=await fetch(`${n}/api/sessions/${encodeURIComponent(i)}/download`,{headers:{Authorization:`Bearer ${e}`},redirect:"follow"});if(!m.ok){let _=await m.text().catch(()=>"");throw new Error(`Download failed (${m.status}): ${_||m.statusText}`)}let f=a?.to||process.cwd();await promises.mkdir(f,{recursive:true});let h=fe.join(f,`${g}.jsonl`);if(!m.body)throw new Error("Download response has no body");let b=stream.Readable.fromWeb(m.body);return await promises$1.pipeline(b,he.createWriteStream(h)),h},async browserReplay(i,a){let d=zc("timeoutMs",a?.timeoutMs,Rf),p=zc("intervalMs",a?.intervalMs,Cf),g=Date.now()+d,m=`/api/sessions/${encodeURIComponent(i)}/browser-replay`;for(;;){let f=g-Date.now();if(f<=0)throw new Error(`Browser replay timed out after ${d}ms`);let h;try{h=await fetch(`${n}${m}`,{headers:{Authorization:`Bearer ${e}`,accept:"application/json"},signal:AbortSignal.timeout(Math.max(1,f))});}catch(_){let w=_.name;throw w==="AbortError"||w==="TimeoutError"?new Error(`Browser replay timed out after ${d}ms`):_}let b={};if(h.ok)b=await h.json();else {let _=await h.text().catch(()=>"");throw new Error(`Dashboard API error (${h.status}): ${_||h.statusText}`)}if(b.status==="ready")return o(b,i);if(b.status==="failed"){let _=typeof b.error=="string"?b.error:"unknown error";throw new Error(`Browser replay failed: ${_}`)}if(Date.now()>=g)throw new Error(`Browser replay timed out after ${d}ms`);await c(Math.min(p,Math.max(0,g-Date.now())));}},async share(i,a){let d=await r(`/api/sessions/${encodeURIComponent(i)}/share`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});return le(await d.json())},async unshare(i,a){let d=await r(`/api/sessions/${encodeURIComponent(i)}/unshare`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});return le(await d.json())},async shares(i){let a=await r(`/api/sessions/${encodeURIComponent(i)}/shares`);return le(await a.json())}}}Object.defineProperty(exports,"E2BProvider",{enumerable:true,get:function(){return e2b.E2BProvider}});Object.defineProperty(exports,"createE2BProvider",{enumerable:true,get:function(){return e2b.createE2BProvider}});Object.defineProperty(exports,"DaytonaProvider",{enumerable:true,get:function(){return daytona.DaytonaProvider}});Object.defineProperty(exports,"createDaytonaProvider",{enumerable:true,get:function(){return daytona.createDaytonaProvider}});Object.defineProperty(exports,"ModalProvider",{enumerable:true,get:function(){return modal.ModalProvider}});Object.defineProperty(exports,"createModalProvider",{enumerable:true,get:function(){return modal.createModalProvider}});exports.AGENT_EFFORT_SUPPORT_VALUES=Kl;exports.AGENT_REGISTRY=z;exports.AGENT_TYPES=Wc;exports.ANALYSIS_ARTIFACT_STREAMS=Jl;exports.ANALYSIS_STATUSES=Ll;exports.Agent=tn;exports.BINARY_EFFORT_VALUES=Qi;exports.BROWSER_ACTIONBOOK_PROMPT=zs;exports.BROWSER_LOGIN_MCP_SERVER_NAME=ci;exports.BrowserCredentialsClient=dr;exports.BrowserProfilesClient=Ar;exports.CHECK_STATUSES=Fl;exports.DEFAULT_HARNESS_TRIAL_LAYOUT=bi;exports.DEFAULT_REASONING_EFFORT=eo;exports.EVAL_SANDBOX_PROVIDERS=Dl;exports.Evolve=nn;exports.EvolveApiError=V;exports.EvolveConfigError=D;exports.EvolveDigestMismatchError=qt;exports.EvolveIncompleteDownloadError=Wt;exports.GATEWAY_TRACE_SEQ_BASE=fr;exports.HARNESS_TRIAL_LAYOUTS=_r;exports.HOSTED_ERROR_CODES=hi;exports.HomeFileError=hn;exports.ImportSettleError=zt;exports.JOB_LIST_KINDS=$l;exports.JOB_LIST_SCOPES=Ul;exports.JUDGE_PROMPT=Hs;exports.MANAGED_SANDBOX_PROVIDERS=Ke;exports.MAX_SKILL_BYTES=Ps;exports.MAX_SKILL_FILES=Ts;exports.NoActiveVersionError=xr;exports.Pipeline=Ir;exports.REASONING_EFFORTS=Xi;exports.RETRY_FEEDBACK_PROMPT=Ws;exports.SANDBOX_LOG_STREAMS=jl;exports.SCHEMA_PROMPT=Pa;exports.SKILL_FILE_NAME=xe;exports.SUPPORTED_RUN_OPTIONS=Yc;exports.SWARM_RESULT_BRAND=Be;exports.SYSTEM_PROMPT=Ta;exports.SandboxFeatureUnsupportedError=ji;exports.SandboxNotRunningError=Ki;exports.SandboxPathNotFoundError=Ji;exports.Semaphore=mt;exports.SkillRefError=pe;exports.SkillResolveError=re;exports.Swarm=Bi;exports.SwarmResultList=ft;exports.TASK_LINKED_BY=gr;exports.TASK_LINK_REASONS=mr;exports.TRIAL_ARTIFACT_STREAMS=Bl;exports.TRIAL_STATUSES=Ml;exports.TerminalPipeline=Or;exports.VALIDATION_PRESETS=Dr;exports.VERIFY_PROMPT=qs;exports.WORKSPACE_PROMPT=Ca;exports.WORKSPACE_SWE_PROMPT=Ea;exports.agents=yc;exports.analyses=vc;exports.analysisEvolveRecord=Hl;exports.applyTemplate=Re;exports.assembleTrialTree=zl;exports.auth=jm;exports.browserCredentials=di;exports.browserProfiles=Ni;exports.buildWorkerSystemPrompt=Ys;exports.checkEvolveRecord=Wl;exports.checks=Sc;exports.computeSkillDigest=As;exports.createAgentParser=Ue;exports.createAntigravityParser=$n;exports.createClaudeParser=Fn;exports.createCodexParser=Nn;exports.createDroidParser=Bn;exports.createDshParser=Jn;exports.createGeminiParser=Kn;exports.createPiParser=zn;exports.createPrimeAgentParser=Hn;exports.createZcodeParser=Yn;exports.datasets=hc;exports.executeWithRetry=ae;exports.expandPath=F;exports.gatewayUsageOf=hr;exports.getAgentConfig=te;exports.getMcpSettingsDir=de;exports.getMcpSettingsPath=Z;exports.harborCopyPath=vi;exports.harnessEffortVocabulary=Zc;exports.harnessTrialLayout=_i;exports.homeRelativePath=wi;exports.hosted=Gm;exports.isAgentWorkUpdate=Ro;exports.isHostedErrorCode=yr;exports.isSandboxFeatureUnsupportedError=yf;exports.isSandboxNotRunningError=_f;exports.isSandboxPathNotFoundError=bf;exports.isValidAgentType=Vr;exports.isZodSchema=me;exports.jobEvolveRecord=Gl;exports.jobs=_c;exports.jsonSchemaToString=Qe;exports.liveAgentTypes=vt;exports.managedSandbox=xp;exports.managedSecrets=Di;exports.meta=Rc;exports.mountSkills=Fs;exports.orgs=Er;exports.parseNdjsonLine=Tu;exports.parseNdjsonOutput=Pu;exports.parseQwenOutput=Bo;exports.parseSkillRef=Ms;exports.passAtK=Nl;exports.pinSkillRef=mp;exports.placeHomeObject=ki;exports.readLocalDir=sa;exports.resolveDefaultSandbox=ir;exports.resolveSkillSha=Us;exports.resolveSkills=Ls;exports.resolveStorageConfig=lr;exports.saveLocalDir=ia;exports.sessions=Ef;exports.skillCloneUrl=Ds;exports.skillDisplayUrl=Ze;exports.skills=bc;exports.storage=_g;exports.taskCheckEvolveRecord=ql;exports.trialEvolveRecord=Si;exports.trials=wc;exports.writeAntigravityMcpConfig=Sn;exports.writeAntigravitySettings=xn;exports.writeClaudeMcpConfig=bn;exports.writeCodexMcpConfig=On;exports.writeDroidGatewaySettings=Cn;exports.writeDroidMcpConfig=Rn;exports.writeDshMcpConfig=Dn;exports.writeDshRoutePatch=Un;exports.writeGeminiMcpConfig=_n;exports.writeKimiMcpConfig=vn;exports.writeMcpConfig=rs;exports.writeOpenCodeMcpConfig=Pn;exports.writePiMcpConfig=An;exports.writePrimeAgentMcpConfig=In;exports.writeQwenMcpConfig=wn;exports.writeZcodeMcpConfig=En;exports.writeZcodeProviderConfig=Tn;exports.zodSchemaToJson=Xe;