@evolvingmachines/evolve 0.0.65 → 0.0.67-train-harness-wave-2026-09-25.20260926.e00a8a6d

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 (153) hide show
  1. package/dist/{chunk-DK2MGUPB.js → chunk-DI6LPW2B.js} +2 -2
  2. package/dist/cli/index.cjs +29 -29
  3. package/dist/cli/index.d.cts +3 -3
  4. package/dist/cli/index.d.ts +3 -3
  5. package/dist/cli/index.js +18 -18
  6. package/dist/index.cjs +64 -60
  7. package/dist/index.d.cts +297 -18
  8. package/dist/index.d.ts +297 -18
  9. package/dist/index.js +48 -44
  10. package/dist/{types-B_qmzlMk.d.cts → types-Dj0iMl5V.d.cts} +70 -90
  11. package/dist/{types-B_qmzlMk.d.ts → types-Dj0iMl5V.d.ts} +70 -90
  12. package/harness-capabilities.json +285 -0
  13. package/package.json +9 -6
  14. package/skills/create-adapter/SKILL.md +71 -26
  15. package/skills/create-task/SKILL.md +124 -66
  16. package/skills/evolve/SKILL.md +37 -20
  17. package/skills/evolve-evals/SKILL.md +142 -69
  18. package/skills/evolve-evals/references/cli-reference/agent.md +76 -0
  19. package/skills/evolve-evals/references/cli-reference/analysis.md +78 -0
  20. package/skills/evolve-evals/references/cli-reference/analyze.md +97 -0
  21. package/skills/evolve-evals/references/cli-reference/auth.md +96 -0
  22. package/skills/evolve-evals/references/cli-reference/check.md +157 -0
  23. package/skills/evolve-evals/references/cli-reference/dataset.md +154 -0
  24. package/skills/evolve-evals/references/cli-reference/filesystem.md +168 -0
  25. package/skills/evolve-evals/references/cli-reference/index.md +149 -0
  26. package/skills/evolve-evals/references/cli-reference/job.md +198 -0
  27. package/skills/evolve-evals/references/cli-reference/run.md +188 -0
  28. package/skills/evolve-evals/references/cli-reference/secrets.md +77 -0
  29. package/skills/evolve-evals/references/cli-reference/session.md +56 -0
  30. package/skills/evolve-evals/references/cli-reference/skill.md +52 -0
  31. package/skills/evolve-evals/references/cli-reference/skills.md +85 -0
  32. package/skills/evolve-evals/references/cli-reference/trial.md +115 -0
  33. package/skills/evolve-evals/references/cli-reference/upload.md +72 -0
  34. package/skills/evolve-evals/references/core-concepts/agents.md +101 -0
  35. package/skills/evolve-evals/references/core-concepts/analyze.md +143 -0
  36. package/skills/evolve-evals/references/core-concepts/check.md +116 -0
  37. package/skills/evolve-evals/references/core-concepts/compatibility.md +39 -0
  38. package/skills/evolve-evals/references/core-concepts/compose.md +103 -0
  39. package/skills/evolve-evals/references/core-concepts/datasets.md +234 -0
  40. package/skills/evolve-evals/references/core-concepts/index.md +52 -0
  41. package/skills/evolve-evals/references/core-concepts/jobs.md +223 -0
  42. package/skills/evolve-evals/references/core-concepts/models.md +73 -0
  43. package/skills/evolve-evals/references/core-concepts/multi-step.md +93 -0
  44. package/skills/evolve-evals/references/core-concepts/rewardkit.md +341 -0
  45. package/skills/evolve-evals/references/core-concepts/sandboxes.md +73 -0
  46. package/skills/evolve-evals/references/core-concepts/secrets.md +86 -0
  47. package/skills/evolve-evals/references/core-concepts/sharing.md +81 -0
  48. package/skills/evolve-evals/references/core-concepts/skills.md +100 -0
  49. package/skills/evolve-evals/references/core-concepts/task-config.md +169 -0
  50. package/skills/evolve-evals/references/core-concepts/task-environment.md +127 -0
  51. package/skills/evolve-evals/references/core-concepts/task-reference.md +191 -0
  52. package/skills/evolve-evals/references/core-concepts/task-verifiers.md +209 -0
  53. package/skills/evolve-evals/references/core-concepts/tasks.md +90 -0
  54. package/skills/evolve-evals/references/core-concepts/teams.md +128 -0
  55. package/skills/evolve-evals/references/core-concepts/trial-outputs.md +225 -0
  56. package/skills/evolve-evals/references/core-concepts/trials.md +129 -0
  57. package/skills/evolve-evals/references/core-concepts/upload-sdk-session.md +240 -0
  58. package/skills/evolve-evals/references/core-concepts/upload.md +166 -0
  59. package/skills/evolve-evals/references/dashboard/checks.md +54 -0
  60. package/skills/evolve-evals/references/dashboard/datasets.md +65 -0
  61. package/skills/evolve-evals/references/dashboard/jobs.md +106 -0
  62. package/skills/evolve-evals/references/dashboard/traces.md +54 -0
  63. package/skills/evolve-evals/references/dashboard/trial-viewer.md +77 -0
  64. package/skills/evolve-evals/references/getting-started/first-task.md +228 -0
  65. package/skills/evolve-evals/references/getting-started/installation.md +79 -0
  66. package/skills/evolve-evals/references/getting-started/quick-start.md +100 -0
  67. package/skills/evolve-evals/references/index.md +58 -0
  68. package/skills/evolve-evals/references/sdk/http.md +110 -0
  69. package/skills/evolve-evals/references/sdk/python.md +108 -0
  70. package/skills/evolve-evals/references/sdk/typescript.md +104 -0
  71. package/skills/evolve-evals/references/sdk-reference/agents.md +75 -0
  72. package/skills/evolve-evals/references/sdk-reference/analyses.md +125 -0
  73. package/skills/evolve-evals/references/sdk-reference/auth.md +171 -0
  74. package/skills/evolve-evals/references/sdk-reference/checks.md +146 -0
  75. package/skills/evolve-evals/references/sdk-reference/datasets.md +170 -0
  76. package/skills/evolve-evals/references/sdk-reference/error-codes.md +231 -0
  77. package/skills/evolve-evals/references/sdk-reference/errors.md +98 -0
  78. package/skills/evolve-evals/references/sdk-reference/filesystem.md +166 -0
  79. package/skills/evolve-evals/references/sdk-reference/index.md +161 -0
  80. package/skills/evolve-evals/references/sdk-reference/jobs.md +250 -0
  81. package/skills/evolve-evals/references/sdk-reference/meta.md +54 -0
  82. package/skills/evolve-evals/references/sdk-reference/methods/agents.md +154 -0
  83. package/skills/evolve-evals/references/sdk-reference/methods/analyses.md +211 -0
  84. package/skills/evolve-evals/references/sdk-reference/methods/auth.md +257 -0
  85. package/skills/evolve-evals/references/sdk-reference/methods/checks.md +462 -0
  86. package/skills/evolve-evals/references/sdk-reference/methods/datasets.md +687 -0
  87. package/skills/evolve-evals/references/sdk-reference/methods/filesystem.md +527 -0
  88. package/skills/evolve-evals/references/sdk-reference/methods/jobs.md +1023 -0
  89. package/skills/evolve-evals/references/sdk-reference/methods/meta.md +213 -0
  90. package/skills/evolve-evals/references/sdk-reference/methods/secrets.md +157 -0
  91. package/skills/evolve-evals/references/sdk-reference/methods/skills.md +125 -0
  92. package/skills/evolve-evals/references/sdk-reference/methods/trials.md +371 -0
  93. package/skills/evolve-evals/references/sdk-reference/secrets.md +104 -0
  94. package/skills/evolve-evals/references/sdk-reference/skills.md +66 -0
  95. package/skills/evolve-evals/references/sdk-reference/trials.md +164 -0
  96. package/skills/evolve-evals/references/sdk-reference/types.md +1255 -0
  97. package/skills/publish/SKILL.md +103 -79
  98. package/skills/rewardkit/SKILL.md +78 -23
  99. package/spec/openapi.yaml +164 -160
  100. package/skills/evolve-evals/references/cli-reference/agent.mdx +0 -79
  101. package/skills/evolve-evals/references/cli-reference/analysis.mdx +0 -160
  102. package/skills/evolve-evals/references/cli-reference/analyze.mdx +0 -84
  103. package/skills/evolve-evals/references/cli-reference/auth.mdx +0 -133
  104. package/skills/evolve-evals/references/cli-reference/check.mdx +0 -263
  105. package/skills/evolve-evals/references/cli-reference/dataset.mdx +0 -151
  106. package/skills/evolve-evals/references/cli-reference/index.mdx +0 -108
  107. package/skills/evolve-evals/references/cli-reference/job.mdx +0 -278
  108. package/skills/evolve-evals/references/cli-reference/run.mdx +0 -204
  109. package/skills/evolve-evals/references/cli-reference/secrets.mdx +0 -95
  110. package/skills/evolve-evals/references/cli-reference/skill.mdx +0 -61
  111. package/skills/evolve-evals/references/cli-reference/skills.mdx +0 -81
  112. package/skills/evolve-evals/references/cli-reference/trial.mdx +0 -181
  113. package/skills/evolve-evals/references/cli-reference/upload.mdx +0 -36
  114. package/skills/evolve-evals/references/core-concepts/agents.mdx +0 -106
  115. package/skills/evolve-evals/references/core-concepts/analyze.mdx +0 -86
  116. package/skills/evolve-evals/references/core-concepts/check.mdx +0 -64
  117. package/skills/evolve-evals/references/core-concepts/datasets.mdx +0 -138
  118. package/skills/evolve-evals/references/core-concepts/index.mdx +0 -42
  119. package/skills/evolve-evals/references/core-concepts/jobs.mdx +0 -151
  120. package/skills/evolve-evals/references/core-concepts/models.mdx +0 -68
  121. package/skills/evolve-evals/references/core-concepts/sandboxes.mdx +0 -52
  122. package/skills/evolve-evals/references/core-concepts/secrets.mdx +0 -41
  123. package/skills/evolve-evals/references/core-concepts/sharing.mdx +0 -35
  124. package/skills/evolve-evals/references/core-concepts/skills.mdx +0 -42
  125. package/skills/evolve-evals/references/core-concepts/tasks.mdx +0 -216
  126. package/skills/evolve-evals/references/core-concepts/teams.mdx +0 -36
  127. package/skills/evolve-evals/references/core-concepts/trial-outputs.mdx +0 -117
  128. package/skills/evolve-evals/references/core-concepts/trials.mdx +0 -103
  129. package/skills/evolve-evals/references/core-concepts/upload.mdx +0 -93
  130. package/skills/evolve-evals/references/dashboard/checks.mdx +0 -21
  131. package/skills/evolve-evals/references/dashboard/datasets.mdx +0 -24
  132. package/skills/evolve-evals/references/dashboard/jobs.mdx +0 -65
  133. package/skills/evolve-evals/references/dashboard/traces.mdx +0 -17
  134. package/skills/evolve-evals/references/dashboard/trial-viewer.mdx +0 -30
  135. package/skills/evolve-evals/references/getting-started/installation.mdx +0 -56
  136. package/skills/evolve-evals/references/getting-started/quick-start.mdx +0 -94
  137. package/skills/evolve-evals/references/index.mdx +0 -48
  138. package/skills/evolve-evals/references/sdk/python.mdx +0 -161
  139. package/skills/evolve-evals/references/sdk/typescript.mdx +0 -163
  140. package/skills/evolve-evals/references/sdk-reference/agents.mdx +0 -108
  141. package/skills/evolve-evals/references/sdk-reference/analyses.mdx +0 -222
  142. package/skills/evolve-evals/references/sdk-reference/auth.mdx +0 -116
  143. package/skills/evolve-evals/references/sdk-reference/checks.mdx +0 -300
  144. package/skills/evolve-evals/references/sdk-reference/datasets.mdx +0 -346
  145. package/skills/evolve-evals/references/sdk-reference/errors.mdx +0 -210
  146. package/skills/evolve-evals/references/sdk-reference/index.mdx +0 -60
  147. package/skills/evolve-evals/references/sdk-reference/jobs.mdx +0 -822
  148. package/skills/evolve-evals/references/sdk-reference/meta.mdx +0 -52
  149. package/skills/evolve-evals/references/sdk-reference/skills.mdx +0 -69
  150. package/skills/evolve-evals/references/sdk-reference/trials.mdx +0 -302
  151. package/skills/evolve-evals/references/sdk-reference/types.mdx +0 -274
  152. package/skills/evolve-evals/references/snippets/global-options.mdx +0 -13
  153. package/skills/evolve-evals/references/snippets/list-flags.mdx +0 -23
@@ -1,4 +1,4 @@
1
- import {a,b}from'./chunk-HQJI3HHU.js';import {createWriteStream}from'fs';import {mkdir,rename,rm}from'fs/promises';import {join,basename}from'path';import {Readable}from'stream';import {pipeline}from'stream/promises';function ft(e=""){let t=process.env.EVOLVE_GATEWAY_URL||"https://swarmkit-gateway-692833842999.us-central1.run.app";if(!e)return t;let n=e.startsWith("/")?e:`/${e}`;return `${t}${n}`}function bt(e=""){let t=process.env.EVOLVE_DASHBOARD_URL||D;if(!e)return t;let n=e.startsWith("/")?e:`/${e}`;return `${t.replace(/\/$/,"")}${n}`}var ns=["e2b","daytona","modal"];function Oe(e){return bt(`/api/managed/${e}`)}function ss(){return `${Oe("daytona")}/toolbox`}function rs(){return Oe("e2b")}function as(e){return {"browser-use":{type:"http",url:ft("/browser_use/mcp"),headers:{"x-litellm-api-key":`Bearer ${e}`}}}}var M="EVOLVE_API_KEY",is="E2B_API_KEY",os="DAYTONA_API_KEY",ls="MODAL_TOKEN_ID",us="MODAL_TOKEN_SECRET",cs="claude",ds=36e5,gs=4,ps=100,De="/home/user";function ms(e,t){return t?t.replace(/\/+$/,"")||"/":e?e==="root"?"/root":`/home/${e}`:De}var D=process.env.EVOLVE_DASHBOARD_URL||"https://dashboard.evolvingmachines.ai",fs="x-litellm-customer-id",bs="x-litellm-tags",ys="run:",hs=".evolve-sdk/observability/sessions",ks=["tag","provider","agent","model","sandboxId","sandbox_id","timestamp","event","events"],vs=100,Ss=5e3,Rs=3,xs=1e3;var yt=["QUEUED","RUNNING","SCORING","SCORED","SCORING_ERROR","INFRASTRUCTURE_ERROR","BUDGET","INDETERMINATE","CANCELLED"],ht=["e2b","daytona","modal"],kt=["my","shared","org"],vt=["job","check","all"],St=["queued","running","completed","failed"],Rt=["queued","running","completed"];function B(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e;if(typeof t.provisional!="boolean")return null;let n=r=>typeof r=="number"&&Number.isFinite(r)?r:null;return {provisional:t.provisional,spent_usd:n(t.spent_usd),input_tokens:n(t.input_tokens),cached_input_tokens:n(t.cached_input_tokens),cache_write_tokens:n(t.cache_write_tokens),output_tokens:n(t.output_tokens),as_of:typeof t.as_of=="string"?t.as_of:null}}function xt(e){let t=e.stats?.evals??{},n=[];for(let r of Object.keys(t).sort()){let i=t[r]?.pass_at_k??{},l=[];for(let d of Object.keys(i)){let u=Number(d),g=i[d];!Number.isFinite(u)||typeof g!="number"||!Number.isFinite(g)||l.push({k:u,value:g});}l.length!==0&&(l.sort((d,u)=>d.k-u.k),n.push({evals_key:r,points:l}));}return n}var me=["dataset_flag","job_dataset_record","task_hash","none"],_e=["hash_mismatch","task_not_in_dataset","no_dataset_named","dataset_ambiguous","no_hash_match","no_task_digest"];function T(e){let t=e.link??{};return {visibility:e.visibility==="LINK"?"LINK":"PRIVATE",link:{enabled:t.enabled===true,...typeof t.url=="string"?{url:t.url}:{}},emails:(Array.isArray(e.emails)?e.emails:[]).map(n=>{let r=n;return {email:String(r.email??""),shared_by:String(r.shared_by??""),created_at:String(r.created_at??"")}})}}var fe=1e9;function be(e){let t=e.data?.update;if(!t||typeof t!="object"||Array.isArray(t))return null;let n=t;if(n.sessionUpdate!=="usage"||n.source!=="gateway")return null;let r=n.usage;return !r||typeof r!="object"||Array.isArray(r)?null:n}function z(e,t,n){if(e!=null){if(!Array.isArray(e)||e.some(r=>typeof r!="string"))throw new Error(`${n} storedAt is not a list of date-time strings`);if(e.length!==t)throw new Error(`${n} storedAt has ${e.length} entries for ${t} events (one per event, index-aligned)`);return e}}var At=["trace-parsed","verifier","trace-stdout","trace-stderr","trace-atif","trajectory","agent-home","filesystem"],Tt=["agent","verifier","setup","system","metrics"],wt=["trace-stdout","trace-stderr","agent-home"],Le=["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 ye(e){return typeof e=="string"&&Le.includes(e)}var Et=["level","binary","none"];function Pt(e,t,n){return e==="measured"&&t===0&&n.every(r=>(r??null)===null)}function Je(e,t,n){return typeof e!="number"||!Number.isFinite(e)?{lane:"unmeasured"}:t==="measured"?Pt(t,e,n)?{lane:"unmeasured"}:{lane:"measured",usd:e}:t==="measured_provisional"?{lane:"floor",usd:e}:{lane:"unmeasured"}}function ee(e){let t=e.agent_result;return Je(t?.cost_usd,e.spend_source,[t?.n_input_tokens,t?.n_cache_tokens,t?.n_output_tokens])}function Ct(e){let t=e.judge_result;return Je(t?.cost_usd,e.judge_spend_source,[t?.n_input_tokens,t?.n_cache_tokens,t?.n_output_tokens])}function It(e,t){return typeof e!="number"||!Number.isFinite(e)?{lane:"unmeasured"}:typeof t=="number"&&t>0?{lane:"floor",usd:e}:{lane:"measured",usd:e}}function Ot(e){let t=ee(e);if(t.lane!=="unmeasured")return t;let n=e.usage;return n&&n.provisional&&typeof n.spent_usd=="number"?{lane:"floor",usd:n.spent_usd}:t}var Ue={stdoutFile:"stdout.log",harborCopies:[]},he={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:[]}},Dt={"claude-code":"claude",codex:"codex","gemini-cli":"gemini","qwen-coder":"qwen","kimi-code":"kimi",opencode:"opencode"};function je(e){let t=e in he?e:Dt[e];return t===void 0?Ue:he[t]}var Lt="/logs/agent",Jt="agent-home.json";function Fe(e){let t=Ne(Lt,e);if(t!==null)return t;let n=e.replace(/^\/+/,"");if(n===Jt)return n;let r=/^(?:root|home\/[^/]+)\/(.+)$/.exec(n);return r!==null?r[1]:`sessions/${n}`}function Ne(e,t){return t.startsWith(`${e}/`)?t.slice(e.length+1):null}function $e(e,t){let n=Fe(t),r=t.replace(/^\/+/,"");e.has(n)&&(n=r);for(let i=2;e.has(n);i++)n=`${r}.${i}`;return e.add(n),n}function Me(e,t){for(let n of e.harborCopies){let r=Ne(n.sandboxRoot,t);if(r!==null)return `${n.agentDir}/${r}`}return null}function Ut(e,t){let n=new Set,r={};for(let i of Object.keys(t).sort()){r[`agent/${$e(n,i)}`]=t[i];let l=Me(e,i);l!==null&&!n.has(l)&&(n.add(l),r[`agent/${l}`]=t[i]);}return Object.fromEntries(Object.keys(r).sort().map(i=>[i,r[i]]))}function te(e){return JSON.stringify(e,null,2)+`
1
+ import {a,b}from'./chunk-HQJI3HHU.js';import {createWriteStream}from'fs';import {mkdir,rename,rm}from'fs/promises';import {join,basename}from'path';import {Readable}from'stream';import {pipeline}from'stream/promises';function ft(e=""){let t=process.env.EVOLVE_GATEWAY_URL||"https://swarmkit-gateway-692833842999.us-central1.run.app";if(!e)return t;let n=e.startsWith("/")?e:`/${e}`;return `${t}${n}`}function bt(e=""){let t=process.env.EVOLVE_DASHBOARD_URL||D;if(!e)return t;let n=e.startsWith("/")?e:`/${e}`;return `${t.replace(/\/$/,"")}${n}`}var ns=["e2b","daytona","modal"];function Oe(e){return bt(`/api/managed/${e}`)}function ss(){return `${Oe("daytona")}/toolbox`}function rs(){return Oe("e2b")}function as(e){return {"browser-use":{type:"http",url:ft("/browser_use/mcp"),headers:{"x-litellm-api-key":`Bearer ${e}`}}}}var M="EVOLVE_API_KEY",is="E2B_API_KEY",os="DAYTONA_API_KEY",ls="MODAL_TOKEN_ID",us="MODAL_TOKEN_SECRET",cs="claude",ds=36e5,gs=4,ps=100,De="/home/user";function ms(e,t){return t?t.replace(/\/+$/,"")||"/":e?e==="root"?"/root":`/home/${e}`:De}var D=process.env.EVOLVE_DASHBOARD_URL||"https://dashboard.evolvingmachines.ai",fs="x-litellm-customer-id",bs="x-litellm-tags",ys="run:",hs=".evolve-sdk/observability/sessions",ks=["tag","provider","agent","model","sandboxId","sandbox_id","timestamp","event","events"],vs=100,Ss=5e3,Rs=3,xs=1e3;var yt=["QUEUED","RUNNING","SCORING","SCORED","SCORING_ERROR","INFRASTRUCTURE_ERROR","BUDGET","INDETERMINATE","CANCELLED"],ht=["e2b","daytona","modal"],kt=["my","shared","org"],vt=["job","check","all"],St=["queued","running","completed","failed"],Rt=["queued","running","completed"];function B(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e;if(typeof t.provisional!="boolean")return null;let n=r=>typeof r=="number"&&Number.isFinite(r)?r:null;return {provisional:t.provisional,spent_usd:n(t.spent_usd),input_tokens:n(t.input_tokens),cached_input_tokens:n(t.cached_input_tokens),cache_write_tokens:n(t.cache_write_tokens),output_tokens:n(t.output_tokens),as_of:typeof t.as_of=="string"?t.as_of:null}}function xt(e){let t=e.stats?.evals??{},n=[];for(let r of Object.keys(t).sort()){let i=t[r]?.pass_at_k??{},l=[];for(let d of Object.keys(i)){let u=Number(d),g=i[d];!Number.isFinite(u)||typeof g!="number"||!Number.isFinite(g)||l.push({k:u,value:g});}l.length!==0&&(l.sort((d,u)=>d.k-u.k),n.push({evals_key:r,points:l}));}return n}var me=["dataset_flag","job_dataset_record","task_hash","none"],_e=["hash_mismatch","task_not_in_dataset","no_dataset_named","dataset_ambiguous","no_hash_match","no_task_digest"];function T(e){let t=e.link??{};return {visibility:e.visibility==="LINK"?"LINK":"PRIVATE",link:{enabled:t.enabled===true,...typeof t.url=="string"?{url:t.url}:{}},emails:(Array.isArray(e.emails)?e.emails:[]).map(n=>{let r=n;return {email:String(r.email??""),shared_by:String(r.shared_by??""),created_at:String(r.created_at??"")}})}}var fe=1e9;function be(e){let t=e.data?.update;if(!t||typeof t!="object"||Array.isArray(t))return null;let n=t;if(n.sessionUpdate!=="usage"||n.source!=="gateway")return null;let r=n.usage;return !r||typeof r!="object"||Array.isArray(r)?null:n}function z(e,t,n){if(e!=null){if(!Array.isArray(e)||e.some(r=>typeof r!="string"))throw new Error(`${n} storedAt is not a list of date-time strings`);if(e.length!==t)throw new Error(`${n} storedAt has ${e.length} entries for ${t} events (one per event, index-aligned)`);return e}}var At=["trace-parsed","verifier","trace-stdout","trace-stderr","trace-atif","trajectory","agent-home","filesystem"],Tt=["agent","verifier","setup","system","metrics"],wt=["trace-stdout","trace-stderr","agent-home"],Le=["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 ye(e){return typeof e=="string"&&Le.includes(e)}var Et=["level","binary","none"];function Pt(e,t,n){return e==="measured"&&t===0&&n.every(r=>(r??null)===null)}function Je(e,t,n){return typeof e!="number"||!Number.isFinite(e)?{lane:"unmeasured"}:t==="measured"?Pt(t,e,n)?{lane:"unmeasured"}:{lane:"measured",usd:e}:t==="measured_provisional"?{lane:"floor",usd:e}:{lane:"unmeasured"}}function ee(e){let t=e.agent_result;return Je(t?.cost_usd,e.spend_source,[t?.n_input_tokens,t?.n_cache_tokens,t?.n_output_tokens])}function Ct(e){let t=e.judge_result;return Je(t?.cost_usd,e.judge_spend_source,[t?.n_input_tokens,t?.n_cache_tokens,t?.n_output_tokens])}function It(e,t){return typeof e!="number"||!Number.isFinite(e)?{lane:"unmeasured"}:typeof t=="number"&&t>0?{lane:"floor",usd:e}:{lane:"measured",usd:e}}function Ot(e){let t=ee(e);if(t.lane!=="unmeasured")return t;let n=e.usage;return n&&n.provisional&&typeof n.spent_usd=="number"?{lane:"floor",usd:n.spent_usd}:t}var Ue={stdoutFile:"stdout.log",harborCopies:[]},he={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:[]}},Dt={"claude-code":"claude",codex:"codex","gemini-cli":"gemini","qwen-coder":"qwen","kimi-code":"kimi",opencode:"opencode","antigravity-cli":"antigravity"};function je(e){let t=e in he?e:Dt[e];return t===void 0?Ue:he[t]}var Lt="/logs/agent",Jt="agent-home.json";function Fe(e){let t=Ne(Lt,e);if(t!==null)return t;let n=e.replace(/^\/+/,"");if(n===Jt)return n;let r=/^(?:root|home\/[^/]+)\/(.+)$/.exec(n);return r!==null?r[1]:`sessions/${n}`}function Ne(e,t){return t.startsWith(`${e}/`)?t.slice(e.length+1):null}function $e(e,t){let n=Fe(t),r=t.replace(/^\/+/,"");e.has(n)&&(n=r);for(let i=2;e.has(n);i++)n=`${r}.${i}`;return e.add(n),n}function Me(e,t){for(let n of e.harborCopies){let r=Ne(n.sandboxRoot,t);if(r!==null)return `${n.agentDir}/${r}`}return null}function Ut(e,t){let n=new Set,r={};for(let i of Object.keys(t).sort()){r[`agent/${$e(n,i)}`]=t[i];let l=Me(e,i);l!==null&&!n.has(l)&&(n.add(l),r[`agent/${l}`]=t[i]);}return Object.fromEntries(Object.keys(r).sort().map(i=>[i,r[i]]))}function te(e){return JSON.stringify(e,null,2)+`
2
2
  `}function Be(e,t,n){return {trial_id:e.id,job_id:e.job_id,user_id:n,provider:e.sandbox_provider,gateway:{cost_usd:e.agent_result?.cost_usd??null,n_input_tokens:e.agent_result?.n_input_tokens??null,n_cache_tokens:e.agent_result?.n_cache_tokens??null,n_output_tokens:e.agent_result?.n_output_tokens??null,spend_source:e.spend_source,max_trial_spend_usd:e.max_trial_spend_usd,judge:e.judge_result?{cost_usd:e.judge_result.cost_usd,n_input_tokens:e.judge_result.n_input_tokens,n_cache_tokens:e.judge_result.n_cache_tokens,n_output_tokens:e.judge_result.n_output_tokens,spend_source:e.judge_spend_source??null}:null},regrade_lineage:{is_regrade:t?.is_regrade??false,source_jobs:t?.source_jobs??[],n_retries:e.n_retries,retries:e.retries}}}function jt(e,t){return {job_id:e.id,user_id:t,provider:e.sandbox_provider,gateway:{cost_usd:e.stats.cost_usd??null,judge_cost_usd:e.stats.judge_cost_usd??null,n_unmeasured_trials:e.stats.n_unmeasured_trials??null,n_unmeasured_judge_trials:e.stats.n_unmeasured_judge_trials??null,n_input_tokens:e.stats.n_input_tokens??null,n_cache_tokens:e.stats.n_cache_tokens??null,n_output_tokens:e.stats.n_output_tokens??null,max_trial_spend_usd:e.max_trial_spend_usd,worst_case_spend_usd:e.worst_case_spend_usd},regrade_lineage:{is_regrade:e.is_regrade,source_jobs:e.source_jobs}}}function Ft(e){let t=e.agent_result;return t==null?t??null:ee(e).lane==="measured"?t:{...t,cost_usd:null}}function Nt(e){let{trial:t}=e,n={};n["config.json"]=te({trial_name:t.id,task:{name:t.task_name,source:t.source},agent:{name:t.agent_info.name,version:t.agent_info.version,model_name:t.agent_info.model_info.name,reasoning_effort:t.agent_info.reasoning_effort}}),n["result.json"]=te({trial_name:t.id,task_name:t.task_name,status:t.status,reward:t.reward,verifier_result:t.verifier_result,exception_info:t.exception_info,agent_result:Ft(t),started_at:t.started_at,finished_at:t.finished_at,environment_setup:t.environment_setup,agent_setup:t.agent_setup,agent_execution:t.agent_execution,verifier:t.verifier});let r=je(t.agent_info.name);return e.atif!==null&&(n["agent/trajectory.json"]=e.atif),e.stdout!==null&&(n[`agent/${r.stdoutFile}`]=e.stdout),e.stderr!==null&&(n["agent/stderr.log"]=e.stderr),e.events.length>0&&(n["agent/trace-parsed.jsonl"]=e.events.map(i=>JSON.stringify(i)).join(`
3
3
  `)+`
4
4
  `),e.home!==null&&Object.assign(n,Ut(r,e.home)),e.verifierLog!==null&&(n["verifier/test-stdout.txt"]=e.verifierLog),t.verifier_result?.rewards&&(n["verifier/reward.json"]=te(t.verifier_result.rewards)),t.exception_info&&(n["exception.txt"]=`${t.exception_info.exception_type}: ${t.exception_info.exception_message}
@@ -7,7 +7,7 @@ import {a,b}from'./chunk-HQJI3HHU.js';import {createWriteStream}from'fs';import
7
7
 
8
8
  `))!==-1;){let l=t.slice(0,i);t=t.slice(i+2);let d,u,g=[];for(let s of l.split(`
9
9
  `)){if(!s||s.startsWith(":"))continue;let a=s.indexOf(":"),o=a===-1?s:s.slice(0,a),c=a===-1?"":s.slice(a+1);c.startsWith(" ")&&(c=c.slice(1)),o==="id"?d=c:o==="event"?u=c:o==="data"&&g.push(c);}(d!==void 0||u!==void 0||g.length>0)&&e({id:d,event:u,data:g.join(`
10
- `)});}}}}async function*Ve(e,t,n){let r=await _(e,t,{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 i=[],l=Ze(g=>{i.push({event:g.event||"message",...g.id!==void 0?{id:g.id}:{},data:g.data?ot(g.data):{}});}),d=r.body.getReader(),u=new TextDecoder;try{for(;;){let{done:g,value:s}=await d.read();if(g)break;for(l.push(u.decode(s,{stream:!0}));i.length>0;)yield i.shift();}}finally{d.cancel().catch(()=>{});}}function j(e){let t=new URLSearchParams;for(let[r,i]of Object.entries(e))i!==void 0&&t.set(r,String(i));let n=t.toString();return n?`?${n}`:""}function et(e){return e.split("/").filter(Boolean).map(encodeURIComponent).join("/")}function we(e,t){return {async status(){return await(await _(e,`${t}/filesystem`)).json()},async list(n){return await(await _(e,`${t}/filesystem/files${j({path:n?.path,source:n?.source,cursor:n?.cursor,limit:n?.limit})}`)).json()},async read(n,r){let i=Te(r?.range),l=await _(e,`${t}/filesystem/files/${et(n)}${j({source:r?.source})}`,i?{headers:{Range:i}}:void 0);return Buffer.from(await l.arrayBuffer())},async search(n){return await(await _(e,`${t}/filesystem/search${j({q:n.q,path:n.path,regex:n.regex,limit:n.limit,source:n.source})}`)).json()},async changes(n){return await(await _(e,`${t}/filesystem/changes${j({source:n?.source,phase:n?.phase,cursor:n?.cursor,limit:n?.limit})}`)).json()},archive:(async n=>ce(e,`${t}/filesystem/archive${j({path:n?.path,source:n?.source})}`,n,"filesystem.tar.gz")),async watch(n){return await(await _(e,`${t}/filesystem/watch`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({paths:n})})).json()},events(n){return Ve(e,`${t}/filesystem/events`,n)},async logs(n){return await(await _(e,`${t}/logs${j({stream:n.stream,cursor:n.cursor,limit:n.limit})}`)).json()},logEvents(n){return Ve(e,`${t}/logs/events`,n)},async procs(){return await(await _(e,`${t}/procs`)).json()}}}function Sn(e,t){return {async status(){return await(await _(e,`${t}/filesystem`)).json()},async list(n){return await(await _(e,`${t}/filesystem/files${j({path:n?.path,cursor:n?.cursor,limit:n?.limit})}`)).json()},async read(n,r){let i=Te(r?.range),l=await _(e,`${t}/filesystem/files/${et(n)}`,i?{headers:{Range:i}}:void 0);return Buffer.from(await l.arrayBuffer())}}}function P(e,t){let n,r=()=>n??=e({limit:t?.limit,cursor:t?.cursor});return {then(i,l){return r().then(i,l)},catch(i){return r().catch(i)},finally(i){return r().finally(i)},async*[Symbol.asyncIterator](){let i=t?.cursor;for(;;){let l=await e({limit:t?.limit,cursor:i});for(let d of l.items)yield d;if(!l.nextCursor)return;i=l.nextCursor;}}}}function F(e){let t=new FormData;for(let[n,r]of Object.entries(e))r!==void 0&&t.set(n,r);return t}async function Rn(e){let{readFileSync:t,readdirSync:n,statSync:r}=await import('fs'),{basename:i,join:l,resolve:d}=await import('path'),u=d(e),g=m=>r(m,{throwIfNoEntry:false})?.isFile()===true,s=m=>r(m,{throwIfNoEntry:false})?.isDirectory()===true;if(!s(u))throw new Error(`datasets().preflight(): not a directory: ${u}`);let a=[],o=u;if(g(l(u,"task.toml"))){let m=n(u,{withFileTypes:true}).filter(p=>p.isDirectory()&&!p.name.startsWith(".")).filter(p=>g(l(u,p.name,"task.toml"))).map(p=>p.name);if(s(l(u,"tasks"))||m.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:i(u),dir:u});}else {o=s(l(u,"tasks"))?l(u,"tasks"):u;for(let m of n(o,{withFileTypes:true})){if(!m.isDirectory()||m.name.startsWith("."))continue;let p=l(o,m.name);if(!g(l(p,"task.toml")))throw new Error(`${p} 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:m.name,dir:p});}if(a.length===0)throw new Error(`${o} holds no task directories \u2014 nothing to check`);a.sort((m,p)=>m.name<p.name?-1:m.name>p.name?1:0);}let c=(o===u?[u]:[o,u]).map(m=>l(m,"dataset.toml")).find(g);return {tasks:a.map(({name:m,dir:p})=>({name:m,task_toml:t(l(p,"task.toml"),"utf8")})),...c!==void 0?{dataset_toml:t(c,"utf8")}:{}}}async function xn(e,t,n){let{postMultipartFile:r}=await import('./upload-KPYDMWFJ.js'),i=await r({url:`${e.baseUrl}${t}`,method:n.method??"POST",headers:{Authorization:`Bearer ${e.apiKey}`},fields:n.fields,file:n.file,...n.onBytes!==void 0?{onBytes:n.onBytes}:{}});return i.ok||await Z(i),i}async function tt(e,t,n,r){if(r.resumableThreshold!==void 0){let{stat:i}=await import('fs/promises'),{size:l}=await i(n);if(l>r.resumableThreshold){let{uploadArchiveResumable:d}=await import('./resumable-HFSICSH3.js'),u=await d({baseUrl:e.baseUrl,headers:{Authorization:`Bearer ${e.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 Z(u),u}}return await xn(e,t,{method:r.method,fields:r.fields,file:{path:n,filename:r.filename},...r.onBytes!==void 0?{onBytes:r.onBytes}:{}})}async function H(e,t,n){let{tarGzipDirectoryToFile:r}=await import('./tar-GVC4KE52.js'),{mkdtemp:i,rm:l}=await import('fs/promises'),{tmpdir:d}=await import('os'),{join:u}=await import('path'),g=await i(u(d(),"evolve-upload-"));try{let s=u(g,n.filename);return await r(n.directory,s),await tt(e,t,s,n)}finally{await l(g,{recursive:true,force:true});}}function An(e){let t,n=()=>(t||(t=(async()=>{let r=await e.next();for(;!r.done;)r=await e.next();return r.value})()),t);return {then(r,i){return n().then(r,i)},catch(r){return n().catch(r)},finally(r){return n().finally(r)},[Symbol.asyncIterator](){return e}}}var nt="x-package-sha256",le=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"},ue=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 st(e,t){let n=e.headers.get("Content-Length");if(n===null)return;let r=Number(n);if(Number.isFinite(r)&&t!==r)throw new ue(r,t)}async function rt(e,t){let n=e.headers.get(nt);if(!n)return;let{createHash:r}=await import('crypto'),i=r("sha256").update(t).digest("hex");if(i!==n)throw new le(n,i)}function Tn(e,t){let r=(e.headers.get("Content-Disposition")||"").match(/filename="([^"]+)"/);if(!r)return t;let i=basename(r[1]);return i===""||i==="."||i===".."||/[/\\]/.test(i)||/[\u0000-\u001f]/.test(i)?t:i}async function at(e,t,n){if(!e.body)throw new Error("Download response has no body");await mkdir(t,{recursive:true});let r=join(t,Tn(e,n)),{createHash:i,randomBytes:l}=await import('crypto'),d=`${r}.${l(8).toString("hex")}.part`,u=i("sha256"),g=0,s=Readable.fromWeb(e.body);s.on("data",a=>{u.update(a),g+=a.length;});try{await pipeline(s,createWriteStream(d));let a=e.headers.get("Content-Length");if(a!==null&&g!==Number(a))throw new ue(Number(a),g);let o=e.headers.get(nt),c=u.digest("hex");if(o&&c!==o)throw new le(o,c);await rename(d,r);}catch(a){throw await rm(d,{force:true}).catch(()=>{}),a}return r}async function ce(e,t,n,r){let i=await _(e,t);if(n?.stream){if(!i.body)throw new Error("Download response has no body");return i.body}if(n?.to)return at(i,n.to,r);let l=Buffer.from(await i.arrayBuffer());return st(i,l.length),await rt(i,l),l}function wn(e){let t=I("datasets",e);async function n(s){let a=await _(t,`/api/datasets/imports/${encodeURIComponent(s)}`);return V(await a.json())}function r(s){if(!s||typeof s!="object")return null;let a=s;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 i(s){return {name:s.name,title:s.title??null,description:s.description??null,active_version:s.active_version?q(s.active_version):null,latest_version:s.latest_version?q(s.latest_version):null,versions:(s.versions||[]).map(q),selected_version:s.selected_version?q(s.selected_version):null,tasks:R(s.tasks,rn),failed_tasks:sn(s.failed_tasks),upstream:r(s.upstream),created_at:s.created_at,updated_at:s.updated_at}}async function l(s,a){let o=ne(s),c=w(a,{version:o.version}),m=await _(t,`/api/datasets/${encodeURIComponent(o.name)}${c}`);return i(await m.json())}async function d(s,a){let o=a?.pollIntervalMs??Q,c=a?.settleTimeoutMs??en,m=Date.now()+c,p=`${s.name}@${s.version}`,b=null,f=null,k=()=>f?.state==="FAILED"?new ie("settle_timeout",`Import ${s.id}'s dataset "${s.name}" version "${s.version}" settled FAILED, but the final import read kept answering rate-limited/unavailable past the ${c}ms settle budget. Read the failure with datasets().getImport("${s.id}").`,{importId:s.id,dataset:s.name,version:s.version,state:f.state}):new ie("settle_timeout",`Import ${s.id} completed, but dataset "${s.name}" version "${s.version}" did not settle within ${c}ms: last observed state ${f?.state??"never observed"}. Keep following with datasets().get("${p}").`,{importId:s.id,dataset:s.name,version:s.version,state:f?.state??null}),y=async v=>{for(;;){J(a?.signal);try{return await v()}catch(h){if(!(h instanceof A)||h.status!==429&&h.status!==503)throw h;let $=m-Date.now();if($<=0)throw k();await x(Math.min(Math.max((h.retryAfterSec??0)*1e3,o),$),a?.signal);}}};for(;;){J(a?.signal);let v=await y(()=>l(p,{limit:1})),h=v.selected_version;if(h){if(f=h,h.state!==b&&(b=h.state,a?.onVersion?.(h,v)),h.state==="FAILED")return y(()=>n(s.id));if(h.state==="READY"||h.state==="ARCHIVED")return s}if(Date.now()>=m)throw k();await x(o,a?.signal);}}function u(s){return {name:s.name,title:s.title??null,description:s.description??null,active_version:s.active_version?q(s.active_version):null,latest_version:s.latest_version?q(s.latest_version):null,upstream:r(s.upstream)}}async function g(s){let a=await _(t,`/api/datasets${w(s,{search:s?.search})}`);return R(await a.json(),u)}return {list(s){return P(a=>g({...a,search:s?.search}),s)},get:l,async getActive(s,a){let o=await l(s,a);if(o.active_version===null)throw new ve(s);return {name:o.name,title:o.title,description:o.description,active_version:o.active_version,version:o.active_version.version,tasks:o.tasks??{items:[],nextCursor:null,hasMore:false},versions:o.versions??[],created_at:o.created_at,updated_at:o.updated_at}},async getTaskBuild(s,a){let o=ne(s);if(o.version===void 0)throw new Error(`datasets().getTaskBuild() needs "name@version" \u2014 a task's build outcome belongs to one immutable version (got "${s}")`);let m=await(await _(t,`/api/datasets/${encodeURIComponent(o.name)}/versions/${encodeURIComponent(o.version)}/tasks/${encodeURIComponent(a)}/build`)).json();return {task_name:m.task_name??a,state:m.state,failure:m.failure&&typeof m.failure=="object"?Ke(m.failure):null,build_log_ref:m.build_log_ref??null}},async preflight(s){let a=s?.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 o=await Rn(a);return await(await _(t,"/api/datasets/preflight",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)})).json()},async publish(s,a){let o=s.source,c=s.org??t.org;if(o?.directory){if(s.name===void 0||s.version===void 0){let{existsSync:p}=await import('fs'),{join:b}=await import('path');if(!(p(b(o.directory,"dataset.toml"))||p(b(o.directory,"tasks","dataset.toml"))))throw new Error(`datasets().publish() needs ${s.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 m=await H(t,"/api/datasets/publish",{fields:{name:s.name,version:s.version,org:c},directory:o.directory,filename:"corpus.tar.gz",...a?.onUploadProgress!==void 0?{onBytes:a.onUploadProgress}:{},...a?.onRegistered!==void 0?{onRegistered:a.onRegistered}:{},resumableThreshold:b});return V(await m.json())}if(o&&"archive_url"in o&&o.archive_url){if(s.name===void 0||s.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 m=await _(t,"/api/datasets/publish",{method:"POST",body:F({name:s.name,version:s.version,archive_url:o.archive_url,org:c})});return V(await m.json())}if(o&&"hub_package"in o&&o.hub_package){let m=await _(t,"/api/datasets/publish",{method:"POST",body:F({...s.name!==void 0?{name:s.name}:{},...s.version!==void 0?{version:s.version}:{},hub_package:o.hub_package,org:c})});return V(await m.json())}if(o&&"git_url"in o&&o.git_url){if(s.name===void 0||s.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 m=await _(t,"/api/datasets/publish",{method:"POST",body:F({name:s.name,version:s.version,git_url:o.git_url,git_ref:o.git_ref,...o.git_path!==void 0?{git_path:o.git_path}:{},org:c})});return V(await m.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(s,a){let o=a?.pollIntervalMs??Q,c=null,m=null;for(;;){J(a?.signal);let p;try{p=await n(s);}catch(f){if(f instanceof A&&(f.status===429||f.status===503)){await x(Math.max((f.retryAfterSec??0)*1e3,o),a?.signal);continue}throw f}let b=`${p.status}${p.receiving===true?":receiving":""}`;if(b!==c&&(c=b,a?.onStatus?.(p)),p.progress!==null){let f=JSON.stringify(p.progress);f!==m&&(m=f,a?.onProgress?.(p.progress,p));}if(p.status==="FAILED")return p;if(p.status==="COMPLETED")return d(p,a);await x(o,a?.signal);}},download:(async(s,a)=>{let o=ne(s),c=o.version?`?version=${encodeURIComponent(o.version)}`:"",m=await _(t,`/api/datasets/${encodeURIComponent(o.name)}/download${c}`);if(a?.stream){if(!m.body)throw new Error("Package response has no body");return m.body}if(a?.to)return at(m,a.to,`${o.name}-corpus.tar.gz`);let p=Buffer.from(await m.arrayBuffer());return st(m,p.length),await rt(m,p),p}),listImports(s){return P(async a=>{let o=new URLSearchParams;a.limit!==void 0&&o.set("limit",String(a.limit)),a.cursor!==void 0&&o.set("cursor",a.cursor),s?.status!==void 0&&o.set("status",s.status),s?.dataset!==void 0&&o.set("dataset",s.dataset);let c=o.toString()?`?${o}`:"",m=await _(t,`/api/datasets/imports${c}`);return R(await m.json(),V)},s)},async activate(s,a){let o=await _(t,`/api/datasets/${encodeURIComponent(s)}/versions/${encodeURIComponent(a)}/activate`,{method:"POST"});return i(await o.json())},async update(s,a){let o=await _(t,`/api/datasets/${encodeURIComponent(s)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});return u(await o.json())},async delete(s){await _(t,`/api/datasets/${encodeURIComponent(s)}`,{method:"DELETE"});},taskFiles(s,a){let o=ne(s);if(o.version===void 0)throw new Error(`datasets().taskFiles() needs "name@version" \u2014 a task's files belong to one immutable version (got "${s}")`);return Sn(t,`/api/datasets/${encodeURIComponent(o.name)}/versions/${encodeURIComponent(o.version)}/tasks/${encodeURIComponent(a)}`)}}}function En(e){let t=I("agents",e);return {async create(n){let r=He("agents().create()",{...n,org:n.org??t.org}),i=r.directory?await H(t,"/api/agents",{fields:r.fields,directory:r.directory,filename:"source.tar.gz"}):await _(t,"/api/agents",{method:"POST",body:F(r.fields)});return se(await i.json())},list(n){return P(async r=>{let i=await _(t,`/api/agents${w(r,{scope:n?.scope})}`);return R(await i.json(),se)},n)},async get(n){let r=await _(t,`/api/agents/${encodeURIComponent(n)}`);return se(await r.json())},async delete(n){await _(t,`/api/agents/${encodeURIComponent(n)}`,{method:"DELETE"});},async upsert(n,r){let i=He("agents().upsert()",{...r,name:n,org:r.org??t.org}),l=i.directory?await H(t,`/api/agents/${encodeURIComponent(n)}`,{method:"PUT",fields:i.fields,directory:i.directory,filename:"source.tar.gz"}):await _(t,`/api/agents/${encodeURIComponent(n)}`,{method:"PUT",body:F(i.fields)});return se(await l.json())}}}function He(e,t){let n=typeof t.install_script=="string",r=typeof t.directory=="string";if(n&&r)throw new Error(`${e} takes EITHER an install script ({ install_script }) or a local directory ({ directory }), not both`);if(!n&&!r)throw new Error(`${e} requires either an install script ({ install_script }) or a local directory ({ directory }), plus run_command`);let i={name:t.name,org:t.org,run_command:t.run_command,...t.env!==void 0?{env:JSON.stringify(t.env)}:{},...n?{install_script:t.install_script}:{}};return r?{fields:i,directory:t.directory}:{fields:i}}function ke(e){return {id:e.id,name:e.name,org:typeof e.org=="string"?e.org:null,digest:e.digest,size_bytes:e.size_bytes??0,description:e.description??null,ref:e.ref??`upload:${e.id}`,created_at:e.created_at}}function Pn(e){let t=I("skills",e);return {async upload(n,r){if(typeof n!="string"||!n.trim())throw new Error("skills().upload() requires a local skill directory path");let{basename:i,resolve:l}=await import('path'),d=i(l(n)),g=await(await H(t,"/api/skills",{fields:{name:d||void 0,org:r?.org??t.org},directory:n,filename:"skill.tar.gz"})).json();return (Array.isArray(g.skills)?g.skills:[g]).map(ke)},list(n){return P(async r=>{let i=await _(t,`/api/skills${w(r,{scope:n?.scope})}`);return R(await i.json(),ke)},n)},async get(n){let i=await(await _(t,`/api/skills/${encodeURIComponent(n)}`)).json();return {...ke(i),skill_md:i.skill_md??null}},async delete(n){await _(t,`/api/skills/${encodeURIComponent(n)}`,{method:"DELETE"});}}}function Cn(e){let t=I("jobs",e);async function n(s){let a=await _(t,`/api/jobs/${encodeURIComponent(s)}`);return E(await a.json())}async function r(s){let a=await _(t,`/api/jobs/imports/${encodeURIComponent(s)}`);return W(await a.json())}function i(s){return s.kind!=="check"?E(s):{...s,kind:"check",visibility:s.visibility==="LINK"?"LINK":"PRIVATE",cost_usd:Y(s.cost_usd),finished_at:s.finished_at??null}}async function l(s){let a=await _(t,`/api/jobs${w(s,{search:s?.search,scope:s?.scope,kind:s?.kind})}`);return R(await a.json(),i)}function d(s){let a=s.trials??{};return {task_name:s.task_name,source:s.source,trials:{total:a.total??0,byStatus:a.byStatus??{}},mean_reward:s.mean_reward??null,cost_usd:s.cost_usd??null,check:s.check&&typeof s.check=="object"&&!Array.isArray(s.check)?s.check:null}}async function u(s,a){let o=w(a,{status:a?.status?.length?a.status.join(","):void 0,dataset:a?.dataset}),c=await _(t,`/api/jobs/${encodeURIComponent(s)}/trials${o}`);return R(await c.json(),xe)}async function*g(s,a$1){let{onEvent:o,signal:c}=a$1??{},m=a$1?.reconnectDelayMs??Xt,p=a$1?.maxReconnectDelayMs??X,b=null,f=false,k=false,y=m;for(;!f;){J(c);let v;try{v=await fetch(`${t.baseUrl}/api/jobs/${encodeURIComponent(s)}/events`,{headers:{Authorization:`Bearer ${t.apiKey}`,Accept:"text/event-stream",...b!==null?{"Last-Event-ID":String(b)}:{}},signal:c});}catch(S){if(qe(S,c))throw S;await x(y,c),y=Math.min(y*2,p);continue}if(!v.ok){if(v.status===429||v.status>=500){let S=await v.text().catch(()=>""),C=a(S,v)??0,U=C>0?Math.max(C*1e3,y):y;await x(U,c),y=Math.min(y*2,p);continue}await Z(v);}if(!v.body)throw new Error("Event stream response has no body");let h=false,$=[],mt=Ze(S=>{let C=Number(S.id),U={seq:Number.isInteger(C)?C:-1,type:S.event||"message",data:S.data?ot(S.data):{}};Number.isInteger(C)&&(b=C),h=true,Zt.has(U.type)&&(f=true),$.push(U);}),Ce=v.body.getReader(),_t=new TextDecoder;try{for(;!f;){let{done:S,value:C}=await Ce.read();if(S)break;mt.push(_t.decode(C,{stream:!0}));for(let U of $)o?.(U),yield U;$.length=0;}}catch(S){if(qe(S,c))throw S}finally{await Ce.cancel().catch(()=>{});}if(f)break;J(c);let Ie=await n(s);if(Qt.has(Ie.status)){if(k)return Ie;k=true;continue}h&&(y=m),await x(y,c),y=Math.min(y*2,p);}return n(s)}return {async start(s,a){let o=s.org??t.org,c=o!==void 0?{...s,org:o}:s,m=await _(t,"/api/jobs",{method:"POST",headers:{"Content-Type":"application/json",...a?.idempotencyKey?{"Idempotency-Key":a.idempotencyKey}:{}},body:JSON.stringify(c)});return E(await m.json())},get:n,list(s){return P(a=>l({...a,search:s?.search,scope:s?.scope,kind:s?.kind}),s)},trials(s,a){return P(o=>u(s,{...o,status:a?.status,dataset:a?.dataset}),a)},tasks(s,a){return P(async o=>{let c=await _(t,`/api/jobs/${encodeURIComponent(s)}/tasks${w(o)}`);return R(await c.json(),d)},a)},watch(s,a){return An(g(s,a))},async cancel(s){let a=await _(t,`/api/jobs/${encodeURIComponent(s)}/cancel`,{method:"POST"});return E(await a.json())},async compare(s){let a=s.map(encodeURIComponent).join(","),c=await(await _(t,`/api/jobs/compare?ids=${a}`)).json();return {jobs:(c.jobs||[]).map(yn),taskMatrix:(c.taskMatrix||[]).map(kn)}},async resume(s,a,o){let c=await _(t,`/api/jobs/${encodeURIComponent(s)}/resume`,{method:"POST",headers:{"Content-Type":"application/json",...o?.idempotencyKey?{"Idempotency-Key":o.idempotencyKey}:{}},body:JSON.stringify(a??{})});return E(await c.json())},async retry(s,a,o){let c=await _(t,`/api/jobs/${encodeURIComponent(s)}/retry`,{method:"POST",headers:{"Content-Type":"application/json",...o?.idempotencyKey?{"Idempotency-Key":o.idempotencyKey}:{}},body:JSON.stringify(a??{})});return E(await c.json())},async regrade(s,a){let o={};a?.statuses?.length&&(o.statuses=a.statuses),a?.task_name!==void 0&&(o.task_name=a.task_name);let c=await _(t,`/api/jobs/${encodeURIComponent(s)}/regrade`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});return E(await c.json())},async analyze(s,a){let o=await _(t,`/api/jobs/${encodeURIComponent(s)}/analyze`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a??{})});return E(await o.json())},async watchAnalysis(s,a){let o=a?.pollIntervalMs??Q,c=o,m=null;for(;;){J(a?.signal);let p;try{p=await n(s);}catch(y){if(y instanceof A&&(y.status===429||y.status===503)){await x(Math.max((y.retryAfterSec??0)*1e3,c),a?.signal),c=Math.min(c*2,X);continue}throw y}let b=p.stats.analysis??null,f=b?JSON.stringify([b.n_completed,b.n_failed,b.n_pending]):null,k=f!==null&&f!==m;if(k&&(m=f,a?.onStats?.(p)),b?.n_pending===0)return p;c=k?o:Math.min(c*2,X),await x(c,a?.signal);}},download:(async(s,a)=>ce(t,`/api/jobs/${encodeURIComponent(s)}/download`,a,`job-${s}-results.tar.gz`)),async upload(s,a){let o={dataset:a?.dataset};if(typeof s=="object"&&s!==null){if(typeof s.archive_url!="string"||!s.archive_url.trim())throw new Error("jobs().upload() with a URL source requires { archive_url: 'https://\u2026' }");let h=await _(t,"/api/jobs/upload",{method:"POST",body:F({...o,archive_url:s.archive_url})});return W(await h.json())}if(typeof s!="string"||!s.trim())throw new Error("jobs().upload() requires a job directory (or .tar.gz archive) path, or { archive_url }");let c={fields:o,filename:"job.tar.gz",resumableThreshold:b,resumablePath:"/api/jobs/upload/uploads",...a?.onUploadProgress!==void 0?{onBytes:a.onUploadProgress}:{},...a?.onRegistered!==void 0?{onRegistered:a.onRegistered}:{}},{stat:m}=await import('fs/promises');if((await m(s).catch(()=>null))?.isFile()){let h=await tt(t,"/api/jobs/upload",s,c);return W(await h.json())}let{existsSync:b$1}=await import('fs'),{join:f,resolve:k}=await import('path'),y=k(s);for(let h of ["result.json","config.json"])if(!b$1(f(y,h)))throw new Error(`${y} does not contain ${h}`);let v=await H(t,"/api/jobs/upload",{...c,directory:y});return W(await v.json())},getImport:r,async watchImport(s,a){let o=a?.pollIntervalMs??Q,c=null,m=null;for(;;){J(a?.signal);let p;try{p=await r(s);}catch(f){if(f instanceof A&&(f.status===429||f.status===503)){await x(Math.max((f.retryAfterSec??0)*1e3,o),a?.signal);continue}throw f}let b=`${p.status}${p.receiving?":receiving":""}`;if(b!==c&&(c=b,a?.onStatus?.(p)),p.progress!==null){let f=JSON.stringify(p.progress);f!==m&&(m=f,a?.onProgress?.(p.progress,p));}if(p.status==="COMPLETED"||p.status==="FAILED")return p;await x(o,a?.signal);}},listImports(s){return P(async a=>{let o=new URLSearchParams;a.limit!==void 0&&o.set("limit",String(a.limit)),a.cursor!==void 0&&o.set("cursor",a.cursor),s?.status!==void 0&&o.set("status",s.status);let c=o.toString()?`?${o}`:"",m=await _(t,`/api/jobs/imports${c}`);return R(await m.json(),W)},s)},async delete(s){let o=await(await _(t,`/api/jobs/${encodeURIComponent(s)}`,{method:"DELETE"})).json();return {job_id:o.job_id??s,trials_deleted:o.trials_deleted??0,analyses_deleted:o.analyses_deleted??0}},async share(s,a){let o=await _(t,`/api/jobs/${encodeURIComponent(s)}/share`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});return T(await o.json())},async unshare(s,a){let o=await _(t,`/api/jobs/${encodeURIComponent(s)}/unshare`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});return T(await o.json())},async shares(s){let a=await _(t,`/api/jobs/${encodeURIComponent(s)}/shares`);return T(await a.json())},async grep(s,a,o){let c=await _(t,`/api/jobs/${encodeURIComponent(s)}/grep${w(o,{q:a,type:o?.type})}`);return R(await c.json(),vn)}}}function In(e){let t=I("trials",e);async function n(i,l){let d=await _(t,`/api/trials/${encodeURIComponent(i)}/trace${w(l,{type:l?.type,grep:l?.grep,tail:l?.tail!==void 0?String(l.tail):void 0})}`);return R(await d.json(),Xe)}async function r(i,l){let u=await(await _(t,`/api/trials/${encodeURIComponent(i)}/trace?stream=${l}`)).json();return l==="agent-home"?u.files??null:u.log??null}return {async get(i){let l=await _(t,`/api/trials/${encodeURIComponent(i)}`);return xe(await l.json())},trace:n,artifact:r,async*traceEvents(i,l){let d=l?.cursor;for(;;){let u=await n(i,{...l,cursor:d});for(let g of u.items)yield g;if(!u.nextCursor)return;d=u.nextCursor;}},async regrade(i){let l=await _(t,`/api/trials/${encodeURIComponent(i)}/regrade`,{method:"POST"});return E(await l.json())},async retry(i,l){let d=await _(t,`/api/trials/${encodeURIComponent(i)}/retry`,{method:"POST",...l?.idempotencyKey?{headers:{"Idempotency-Key":l.idempotencyKey}}:{}});return E(await d.json())},async stop(i){let d=await(await _(t,"/api/trials/stop",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({trial_ids:i})})).json();return {stopped:(d.stopped??[]).map(xe),stopped_analyses:(d.stopped_analyses??[]).map(oe).filter(u=>u!==null),already_terminal:d.already_terminal??[],not_found:d.not_found??[]}},async files(i,l){let d=await _(t,`/api/trials/${encodeURIComponent(i)}/files${w(l)}`);return R(await d.json(),u=>({path:u.path,size_bytes:u.size_bytes}))},async file(i,l,d){let u=l.split("/").filter(Boolean).map(encodeURIComponent).join("/"),g=Te(d),s=await _(t,`/api/trials/${encodeURIComponent(i)}/files/${u}`,g?{headers:{Range:g}}:void 0);return Buffer.from(await s.arrayBuffer())},filesystem:i=>we(t,`/api/trials/${encodeURIComponent(i)}`)}}function it(e){let t=e?.update;return typeof t?.sessionUpdate=="string"?t.sessionUpdate:"unknown"}function On(e){let t=I("analyses",e),n=new Set;async function r(d){if(n.has(d))return;let u;try{u=await _(t,`/api/traces/trials/${encodeURIComponent(d)}/artifacts?what=analysis`);}catch(g){throw g instanceof A&&g.status===400?new Error(`"${d}" is not an analysis run (the artifacts door refuses it typed) \u2014 for a trial's artifacts use trials()`):g}await u.text().catch(()=>{}),n.add(d);}async function i(d,u){await r(d);let s=await(await _(t,`/api/traces/trials/${encodeURIComponent(d)}/artifacts?what=${u}`)).json();return u==="agent-home"?s.files??null:s.log??null}async function l(d){let u=await _(t,`/api/analyses${w(d,{scope:d?.scope,job:d?.job,status:d?.status&&d.status.length>0?d.status.join(","):void 0})}`);return R(await u.json(),g=>{let s=oe(g);if(s===null)throw new Error("The analyses list served an unreadable analysis object");return s})}return {list(d){return P(u=>l({...u,scope:d?.scope,job:d?.job,status:d?.status}),d)},async get(d){let g=await(await _(t,`/api/traces/trials/${encodeURIComponent(d)}/artifacts?what=analysis`)).json(),s=oe(g.analysis);if(s===null)throw new Error(`The analysis feed served no readable verdict object for "${d}"`);return n.add(d),s},async transcript(d,u){let g=u?.since;if(g!==void 0&&(!Number.isInteger(g)||g<0))throw new Error(`transcript() since must be a non-negative integer, got ${g}`);let a=await(await _(t,`/api/traces/trials/${encodeURIComponent(d)}/events`+(g!==void 0?`?since=${g}`:""))).json(),o=a.session??{};if(o.kind!=="analysis"){let p=typeof o.kind=="string"?o.kind:"trial";throw new Error(`"${d}" is not an analysis run (the feed resolves it as a ${p}) \u2014 for a trial's trace use trials()`)}let c=g??0,m=Array.isArray(a.events)?a.events:[];return {id:typeof o.id=="string"?o.id:d,analyzed_trial_id:typeof o.analyzedTrialId=="string"?o.analyzedTrialId:null,job_id:typeof o.jobId=="string"?o.jobId:null,task_name:typeof o.tag=="string"?o.tag:null,model_name:typeof o.model=="string"?o.model:null,sandbox_provider:typeof o.provider=="string"?o.provider:null,sandbox_id:typeof o.sandboxId=="string"?o.sandboxId:null,is_ended:o.isEnded===true,total:typeof a.total=="number"?a.total:c+m.length,events:m.map((p,b)=>({seq:c+b,type:it(p),data:p&&typeof p=="object"&&!Array.isArray(p)?p:{}})),gateway_calls:Qe(a.gatewayCalls),stored_at:z(a.storedAt,m.length,"Analysis transcript response")}},artifact:i,download:(async(d,u)=>ce(t,`/api/analyses/${encodeURIComponent(d)}/download`,u,`analysis-${d}.tar.gz`)),async defaults(){return await(await _(t,"/api/analyses/defaults")).json()},filesystem:d=>we(t,`/api/analyses/${encodeURIComponent(d)}`)}}function re(e){if(!e||typeof e!="object"||Array.isArray(e))throw new Error("The checks surface served an unreadable check object");let t=e,n=Array.isArray(t.results)?t.results.filter(i=>!!i&&typeof i=="object"&&!Array.isArray(i)):[],r=t.visibility==="LINK"?"LINK":"PRIVATE";return {...t,visibility:r,results:n}}function Dn(e){let t=I("checks",e);async function n(u){let g=await _(t,`/api/checks/${encodeURIComponent(u)}`);return re(await g.json())}async function r(u){let g=await _(t,`/api/checks${w(u,{scope:u?.scope,status:u?.status&&u.status.length>0?u.status.join(","):void 0,dataset:u?.dataset})}`);return R(await g.json(),re)}let i=new Set;async function l(u){let g;try{g=await _(t,`/api/traces/trials/${encodeURIComponent(u)}/artifacts?what=task-check`);}catch(o){throw o instanceof A&&o.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()`):o}let a=(await g.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 i.add(u),a}async function d(u,g){i.has(u)||await l(u);let a=await(await _(t,`/api/traces/trials/${encodeURIComponent(u)}/artifacts?what=${g}`)).json();return g==="agent-home"?a.files??null:a.log??null}return {async create(u){let{source:g,onUploadProgress:s,...a}=u,o={config:JSON.stringify(a)};if("dataset"in g){if(typeof g.dataset!="string"||g.dataset.trim()==="")throw new Error('checks().create(): source.dataset must be "name" or "name@version"');let y=await _(t,"/api/checks",{method:"POST",body:F({...o,dataset:g.dataset.trim()})});return re(await y.json())}let{existsSync:c,statSync:m}=await import('fs'),{basename:p,resolve:b}=await import('path'),f=b(g.directory);if(!c(f)||!m(f).isDirectory())throw new Error(`checks().create(): Path '${g.directory}' does not exist or is not a directory`);let k=await H(t,"/api/checks",{directory:f,fields:o,filename:`${p(f)||"task"}.tar.gz`,...s!==void 0?{onBytes:s}:{}});return re(await k.json())},get:n,async defaults(){return await(await _(t,"/api/checks/defaults")).json()},list(u){return P(g=>r({...g,scope:u?.scope,status:u?.status,dataset:u?.dataset}),u)},task:l,async transcript(u,g){let s=g?.since;if(s!==void 0&&(!Number.isInteger(s)||s<0))throw new Error(`transcript() since must be a non-negative integer, got ${s}`);let o=await(await _(t,`/api/traces/trials/${encodeURIComponent(u)}/events`+(s!==void 0?`?since=${s}`:""))).json(),c=o.session??{};if(c.kind!=="check"){let b=typeof c.kind=="string"?c.kind:"trial";throw new Error(`"${u}" is not a task check (the feed resolves it as a ${b}) \u2014 for a trial's trace use trials(), for an analysis's use analyses()`)}let m=s??0,p=Array.isArray(o.events)?o.events:[];return {id:typeof c.id=="string"?c.id:u,check_id:typeof c.checkId=="string"?c.checkId:null,dataset:typeof c.datasetRef=="string"?c.datasetRef:null,task_name:typeof c.tag=="string"?c.tag:null,model_name:typeof c.model=="string"?c.model:null,sandbox_provider:typeof c.provider=="string"?c.provider:null,sandbox_id:typeof c.sandboxId=="string"?c.sandboxId:null,is_ended:c.isEnded===true,total:typeof o.total=="number"?o.total:m+p.length,events:p.map((b,f)=>({seq:m+f,type:it(b),data:b&&typeof b=="object"&&!Array.isArray(b)?b:{}})),gateway_calls:Qe(o.gatewayCalls),stored_at:z(o.storedAt,p.length,"Task check transcript response")}},artifact:d,download:(async(u,g)=>ce(t,`/api/checks/${encodeURIComponent(u)}/download`,g,`check-${u}.tar.gz`)),async share(u,g){let s=await _(t,`/api/checks/${encodeURIComponent(u)}/share`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(g)});return T(await s.json())},async unshare(u,g){let s=await _(t,`/api/checks/${encodeURIComponent(u)}/unshare`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(g)});return T(await s.json())},async shares(u){let g=await _(t,`/api/checks/${encodeURIComponent(u)}/shares`);return T(await g.json())},async watch(u,g){let s=g?.pollIntervalMs??Q,a=s,o=null;for(;;){J(g?.signal);let c;try{c=await n(u);}catch(b){if(b instanceof A&&(b.status===429||b.status===503)){await x(Math.max((b.retryAfterSec??0)*1e3,a),g?.signal),a=Math.min(a*2,X);continue}throw b}let m=JSON.stringify(c.results.map(b=>[b.task_name,b.status])),p=m!==o;if(p&&(o=m,g?.onProgress?.(c)),c.status==="completed")return c;a=p?s:Math.min(a*2,X),await x(a,g?.signal);}},taskFilesystem:(u,g)=>we(t,`/api/checks/${encodeURIComponent(u)}/tasks/${encodeURIComponent(g)}`)}}function Ms(e){let t=I("auth",e);return {async status(){let r=await(await _(t,"/api/auth/status")).json(),i=r.key??{};return {user_id:r.user_id,email:r.email??null,key:{id:i.id,label:i.label??null,created_at:i.created_at,last_used_at:i.last_used_at??null}}}}}function Ln(e){return {user_id:e.user_id,email:e.email,role:e.role==="owner"?"owner":"member",joined_at:e.joined_at}}function Jn(e){return {invite_id:e.invite_id,expires_at:typeof e.expires_at=="string"?e.expires_at:null,max_uses:typeof e.max_uses=="number"?e.max_uses:null,uses:typeof e.uses=="number"?e.uses:0,revoked_at:typeof e.revoked_at=="string"?e.revoked_at:null,created_at:e.created_at,token:e.token}}function ae(e){return {org_id:e.org_id,slug:e.slug,display_name:e.display_name,personal:e.personal===true,...e.role==="owner"||e.role==="member"?{role:e.role}:{},created_at:e.created_at}}function Un(e){let t=e.quota??{},n=e.usage??{},r=i=>typeof i=="number"?i:0;return {...ae(e),member_count:r(e.member_count),quota:{max_concurrent_trials:r(t.max_concurrent_trials),max_queued_trials:r(t.max_queued_trials),max_concurrent_imports:r(t.max_concurrent_imports),max_concurrent_analyses:r(t.max_concurrent_analyses),max_concurrent_sessions:r(t.max_concurrent_sessions),monthly_budget_usd:typeof t.monthly_budget_usd=="number"?t.monthly_budget_usd:null,max_concurrent_sandboxes_e2b:r(t.max_concurrent_sandboxes_e2b),max_concurrent_sandboxes_daytona:r(t.max_concurrent_sandboxes_daytona),max_concurrent_sandboxes_modal:r(t.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 jn(e){let t=I("orgs",e);return {async list(){let r=await(await _(t,"/api/orgs")).json();return (Array.isArray(r.items)?r.items:[]).map(i=>ae(i))},async get(n){let r=await _(t,`/api/orgs/${encodeURIComponent(n)}`);return Un(await r.json())},async create(n,r){let i=await _(t,"/api/orgs",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({slug:n,...r?.displayName!==void 0?{display_name:r.displayName}:{}})});return ae(await i.json())},async invite(n){let r=await _(t,`/api/orgs/${encodeURIComponent(n)}/invites`,{method:"POST"});return Jn(await r.json())},async join(n){let i=await(await _(t,"/api/orgs/invites/accept",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:n})})).json();return {org:ae(i.org??{}),already_member:i.already_member===true}},async members(n){let i=await(await _(t,`/api/orgs/${encodeURIComponent(n)}/members`)).json();return (Array.isArray(i.items)?i.items:[]).map(l=>Ln(l))}}}function ot(e){try{let t=JSON.parse(e);return t&&typeof t=="object"?t:{value:t}}catch{return {raw:e}}}function Bs(e){let t,n,r,i,l,d,u,g;return {get datasets(){return t??=wn(e)},get agents(){return n??=En(e)},get jobs(){return r??=Cn(e)},get trials(){return i??=In(e)},get analyses(){return l??=On(e)},get checks(){return d??=Dn(e)},get skills(){return u??=Pn(e)},get orgs(){return g??=jn(e)},meta(){return Fn(e)}}}async function Fn(e){let t=(e?.baseUrl||process.env.EVOLVE_DASHBOARD_URL||D).replace(/\/$/,""),n=await fetch(`${t}/api/meta`);return n.ok||await Z(n),await n.json()}function Ee(e){return e.delivery==="direct"}var ct=18181,O="/tmp/evolve-managed-secrets",dt=`${O}/proxy.py`,Pe=`${O}/config.json`,N=`${O}/ca.crt`,de=`${O}/ca.key`,G=`${O}/ca-bundle.crt`,gt=["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 Ws(){return [...gt]}var Ys=String.raw`#!/usr/bin/env python3
10
+ `)});}}}}async function*Ve(e,t,n){let r=await _(e,t,{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 i=[],l=Ze(g=>{i.push({event:g.event||"message",...g.id!==void 0?{id:g.id}:{},data:g.data?ot(g.data):{}});}),d=r.body.getReader(),u=new TextDecoder;try{for(;;){let{done:g,value:s}=await d.read();if(g)break;for(l.push(u.decode(s,{stream:!0}));i.length>0;)yield i.shift();}}finally{d.cancel().catch(()=>{});}}function j(e){let t=new URLSearchParams;for(let[r,i]of Object.entries(e))i!==void 0&&t.set(r,String(i));let n=t.toString();return n?`?${n}`:""}function et(e){return e.split("/").filter(Boolean).map(encodeURIComponent).join("/")}function we(e,t){return {async status(){return await(await _(e,`${t}/filesystem`)).json()},async list(n){return await(await _(e,`${t}/filesystem/files${j({path:n?.path,source:n?.source,cursor:n?.cursor,limit:n?.limit})}`)).json()},async read(n,r){let i=Te(r?.range),l=await _(e,`${t}/filesystem/files/${et(n)}${j({source:r?.source})}`,i?{headers:{Range:i}}:void 0);return Buffer.from(await l.arrayBuffer())},async search(n){return await(await _(e,`${t}/filesystem/search${j({q:n.q,path:n.path,regex:n.regex,limit:n.limit,source:n.source})}`)).json()},async changes(n){return await(await _(e,`${t}/filesystem/changes${j({source:n?.source,phase:n?.phase,cursor:n?.cursor,limit:n?.limit})}`)).json()},archive:(async n=>ce(e,`${t}/filesystem/archive${j({path:n?.path,source:n?.source})}`,n,"filesystem.tar.gz")),async watch(n){return await(await _(e,`${t}/filesystem/watch`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({paths:n})})).json()},events(n){return Ve(e,`${t}/filesystem/events`,n)},async logs(n){return await(await _(e,`${t}/logs${j({stream:n.stream,cursor:n.cursor,limit:n.limit})}`)).json()},logEvents(n){return Ve(e,`${t}/logs/events`,n)},async procs(){return await(await _(e,`${t}/procs`)).json()}}}function Sn(e,t){return {async status(){return await(await _(e,`${t}/filesystem`)).json()},async list(n){return await(await _(e,`${t}/filesystem/files${j({path:n?.path,cursor:n?.cursor,limit:n?.limit})}`)).json()},async read(n,r){let i=Te(r?.range),l=await _(e,`${t}/filesystem/files/${et(n)}`,i?{headers:{Range:i}}:void 0);return Buffer.from(await l.arrayBuffer())}}}function P(e,t){let n,r=()=>n??=e({limit:t?.limit,cursor:t?.cursor});return {then(i,l){return r().then(i,l)},catch(i){return r().catch(i)},finally(i){return r().finally(i)},async*[Symbol.asyncIterator](){let i=t?.cursor;for(;;){let l=await e({limit:t?.limit,cursor:i});for(let d of l.items)yield d;if(!l.nextCursor)return;i=l.nextCursor;}}}}function F(e){let t=new FormData;for(let[n,r]of Object.entries(e))r!==void 0&&t.set(n,r);return t}async function Rn(e){let{readFileSync:t,readdirSync:n,statSync:r}=await import('fs'),{basename:i,join:l,resolve:d}=await import('path'),u=d(e),g=m=>r(m,{throwIfNoEntry:false})?.isFile()===true,s=m=>r(m,{throwIfNoEntry:false})?.isDirectory()===true;if(!s(u))throw new Error(`datasets().preflight(): not a directory: ${u}`);let a=[],o=u;if(g(l(u,"task.toml"))){let m=n(u,{withFileTypes:true}).filter(p=>p.isDirectory()&&!p.name.startsWith(".")).filter(p=>g(l(u,p.name,"task.toml"))).map(p=>p.name);if(s(l(u,"tasks"))||m.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:i(u),dir:u});}else {o=s(l(u,"tasks"))?l(u,"tasks"):u;for(let m of n(o,{withFileTypes:true})){if(!m.isDirectory()||m.name.startsWith("."))continue;let p=l(o,m.name);if(!g(l(p,"task.toml")))throw new Error(`${p} 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:m.name,dir:p});}if(a.length===0)throw new Error(`${o} holds no task directories \u2014 nothing to check`);a.sort((m,p)=>m.name<p.name?-1:m.name>p.name?1:0);}let c=(o===u?[u]:[o,u]).map(m=>l(m,"dataset.toml")).find(g);return {tasks:a.map(({name:m,dir:p})=>({name:m,task_toml:t(l(p,"task.toml"),"utf8")})),...c!==void 0?{dataset_toml:t(c,"utf8")}:{}}}async function xn(e,t,n){let{postMultipartFile:r}=await import('./upload-KPYDMWFJ.js'),i=await r({url:`${e.baseUrl}${t}`,method:n.method??"POST",headers:{Authorization:`Bearer ${e.apiKey}`},fields:n.fields,file:n.file,...n.onBytes!==void 0?{onBytes:n.onBytes}:{}});return i.ok||await Z(i),i}async function tt(e,t,n,r){if(r.resumableThreshold!==void 0){let{stat:i}=await import('fs/promises'),{size:l}=await i(n);if(l>r.resumableThreshold){let{uploadArchiveResumable:d}=await import('./resumable-HFSICSH3.js'),u=await d({baseUrl:e.baseUrl,headers:{Authorization:`Bearer ${e.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 Z(u),u}}return await xn(e,t,{method:r.method,fields:r.fields,file:{path:n,filename:r.filename},...r.onBytes!==void 0?{onBytes:r.onBytes}:{}})}async function H(e,t,n){let{tarGzipDirectoryToFile:r}=await import('./tar-GVC4KE52.js'),{mkdtemp:i,rm:l}=await import('fs/promises'),{tmpdir:d}=await import('os'),{join:u}=await import('path'),g=await i(u(d(),"evolve-upload-"));try{let s=u(g,n.filename);return await r(n.directory,s),await tt(e,t,s,n)}finally{await l(g,{recursive:true,force:true});}}function An(e){let t,n=()=>(t||(t=(async()=>{let r=await e.next();for(;!r.done;)r=await e.next();return r.value})()),t);return {then(r,i){return n().then(r,i)},catch(r){return n().catch(r)},finally(r){return n().finally(r)},[Symbol.asyncIterator](){return e}}}var nt="x-package-sha256",le=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"},ue=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 st(e,t){let n=e.headers.get("Content-Length");if(n===null)return;let r=Number(n);if(Number.isFinite(r)&&t!==r)throw new ue(r,t)}async function rt(e,t){let n=e.headers.get(nt);if(!n)return;let{createHash:r}=await import('crypto'),i=r("sha256").update(t).digest("hex");if(i!==n)throw new le(n,i)}function Tn(e,t){let r=(e.headers.get("Content-Disposition")||"").match(/filename="([^"]+)"/);if(!r)return t;let i=basename(r[1]);return i===""||i==="."||i===".."||/[/\\]/.test(i)||/[\u0000-\u001f]/.test(i)?t:i}async function at(e,t,n){if(!e.body)throw new Error("Download response has no body");await mkdir(t,{recursive:true});let r=join(t,Tn(e,n)),{createHash:i,randomBytes:l}=await import('crypto'),d=`${r}.${l(8).toString("hex")}.part`,u=i("sha256"),g=0,s=Readable.fromWeb(e.body);s.on("data",a=>{u.update(a),g+=a.length;});try{await pipeline(s,createWriteStream(d));let a=e.headers.get("Content-Length");if(a!==null&&g!==Number(a))throw new ue(Number(a),g);let o=e.headers.get(nt),c=u.digest("hex");if(o&&c!==o)throw new le(o,c);await rename(d,r);}catch(a){throw await rm(d,{force:true}).catch(()=>{}),a}return r}async function ce(e,t,n,r){let i=await _(e,t);if(n?.stream){if(!i.body)throw new Error("Download response has no body");return i.body}if(n?.to)return at(i,n.to,r);let l=Buffer.from(await i.arrayBuffer());return st(i,l.length),await rt(i,l),l}function wn(e){let t=I("datasets",e);async function n(s){let a=await _(t,`/api/datasets/imports/${encodeURIComponent(s)}`);return V(await a.json())}function r(s){if(!s||typeof s!="object")return null;let a=s;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 i(s){return {name:s.name,title:s.title??null,description:s.description??null,active_version:s.active_version?q(s.active_version):null,latest_version:s.latest_version?q(s.latest_version):null,versions:(s.versions||[]).map(q),selected_version:s.selected_version?q(s.selected_version):null,tasks:R(s.tasks,rn),failed_tasks:sn(s.failed_tasks),upstream:r(s.upstream),created_at:s.created_at,updated_at:s.updated_at}}async function l(s,a){let o=ne(s),c=w(a,{version:o.version}),m=await _(t,`/api/datasets/${encodeURIComponent(o.name)}${c}`);return i(await m.json())}async function d(s,a){let o=a?.pollIntervalMs??Q,c=a?.settleTimeoutMs??en,m=Date.now()+c,p=`${s.name}@${s.version}`,b=null,f=null,k=()=>f?.state==="FAILED"?new ie("settle_timeout",`Import ${s.id}'s dataset "${s.name}" version "${s.version}" settled FAILED, but the final import read kept answering rate-limited/unavailable past the ${c}ms settle budget. Read the failure with datasets().getImport("${s.id}").`,{importId:s.id,dataset:s.name,version:s.version,state:f.state}):new ie("settle_timeout",`Import ${s.id} completed, but dataset "${s.name}" version "${s.version}" did not settle within ${c}ms: last observed state ${f?.state??"never observed"}. Keep following with datasets().get("${p}").`,{importId:s.id,dataset:s.name,version:s.version,state:f?.state??null}),y=async v=>{for(;;){J(a?.signal);try{return await v()}catch(h){if(!(h instanceof A)||h.status!==429&&h.status!==503)throw h;let $=m-Date.now();if($<=0)throw k();await x(Math.min(Math.max((h.retryAfterSec??0)*1e3,o),$),a?.signal);}}};for(;;){J(a?.signal);let v=await y(()=>l(p,{limit:1})),h=v.selected_version;if(h){if(f=h,h.state!==b&&(b=h.state,a?.onVersion?.(h,v)),h.state==="FAILED")return y(()=>n(s.id));if(h.state==="READY"||h.state==="ARCHIVED")return s}if(Date.now()>=m)throw k();await x(o,a?.signal);}}function u(s){return {name:s.name,title:s.title??null,description:s.description??null,active_version:s.active_version?q(s.active_version):null,latest_version:s.latest_version?q(s.latest_version):null,upstream:r(s.upstream)}}async function g(s){let a=await _(t,`/api/datasets${w(s,{search:s?.search})}`);return R(await a.json(),u)}return {list(s){return P(a=>g({...a,search:s?.search}),s)},get:l,async getActive(s,a){let o=await l(s,a);if(o.active_version===null)throw new ve(s);return {name:o.name,title:o.title,description:o.description,active_version:o.active_version,version:o.active_version.version,tasks:o.tasks??{items:[],nextCursor:null,hasMore:false},versions:o.versions??[],created_at:o.created_at,updated_at:o.updated_at}},async getTaskBuild(s,a){let o=ne(s);if(o.version===void 0)throw new Error(`datasets().getTaskBuild() needs "name@version" \u2014 a task's build outcome belongs to one immutable version (got "${s}")`);let m=await(await _(t,`/api/datasets/${encodeURIComponent(o.name)}/versions/${encodeURIComponent(o.version)}/tasks/${encodeURIComponent(a)}/build`)).json();return {task_name:m.task_name??a,state:m.state,failure:m.failure&&typeof m.failure=="object"?Ke(m.failure):null,build_log_ref:m.build_log_ref??null}},async preflight(s){let a=s?.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 o=await Rn(a);return await(await _(t,"/api/datasets/preflight",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)})).json()},async publish(s,a){let o=s.source,c=s.org??t.org;if(o?.directory){if(s.name===void 0||s.version===void 0){let{existsSync:p}=await import('fs'),{join:b}=await import('path');if(!(p(b(o.directory,"dataset.toml"))||p(b(o.directory,"tasks","dataset.toml"))))throw new Error(`datasets().publish() needs ${s.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 m=await H(t,"/api/datasets/publish",{fields:{name:s.name,version:s.version,org:c},directory:o.directory,filename:"corpus.tar.gz",...a?.onUploadProgress!==void 0?{onBytes:a.onUploadProgress}:{},...a?.onRegistered!==void 0?{onRegistered:a.onRegistered}:{},resumableThreshold:b});return V(await m.json())}if(o&&"archive_url"in o&&o.archive_url){if(s.name===void 0||s.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 m=await _(t,"/api/datasets/publish",{method:"POST",body:F({name:s.name,version:s.version,archive_url:o.archive_url,org:c})});return V(await m.json())}if(o&&"hub_package"in o&&o.hub_package){let m=await _(t,"/api/datasets/publish",{method:"POST",body:F({...s.name!==void 0?{name:s.name}:{},...s.version!==void 0?{version:s.version}:{},hub_package:o.hub_package,org:c})});return V(await m.json())}if(o&&"git_url"in o&&o.git_url){if(s.name===void 0||s.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 m=await _(t,"/api/datasets/publish",{method:"POST",body:F({name:s.name,version:s.version,git_url:o.git_url,git_ref:o.git_ref,...o.git_path!==void 0?{git_path:o.git_path}:{},org:c})});return V(await m.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(s,a){let o=a?.pollIntervalMs??Q,c=null,m=null;for(;;){J(a?.signal);let p;try{p=await n(s);}catch(f){if(f instanceof A&&(f.status===429||f.status===503)){await x(Math.max((f.retryAfterSec??0)*1e3,o),a?.signal);continue}throw f}let b=`${p.status}${p.receiving===true?":receiving":""}`;if(b!==c&&(c=b,a?.onStatus?.(p)),p.progress!==null){let f=JSON.stringify(p.progress);f!==m&&(m=f,a?.onProgress?.(p.progress,p));}if(p.status==="FAILED")return p;if(p.status==="COMPLETED")return d(p,a);await x(o,a?.signal);}},download:(async(s,a)=>{let o=ne(s),c=o.version?`?version=${encodeURIComponent(o.version)}`:"",m=await _(t,`/api/datasets/${encodeURIComponent(o.name)}/download${c}`);if(a?.stream){if(!m.body)throw new Error("Package response has no body");return m.body}if(a?.to)return at(m,a.to,`${o.name}-corpus.tar.gz`);let p=Buffer.from(await m.arrayBuffer());return st(m,p.length),await rt(m,p),p}),listImports(s){return P(async a=>{let o=new URLSearchParams;a.limit!==void 0&&o.set("limit",String(a.limit)),a.cursor!==void 0&&o.set("cursor",a.cursor),s?.status!==void 0&&o.set("status",s.status),s?.dataset!==void 0&&o.set("dataset",s.dataset);let c=o.toString()?`?${o}`:"",m=await _(t,`/api/datasets/imports${c}`);return R(await m.json(),V)},s)},async activate(s,a){let o=await _(t,`/api/datasets/${encodeURIComponent(s)}/versions/${encodeURIComponent(a)}/activate`,{method:"POST"});return i(await o.json())},async update(s,a){let o=await _(t,`/api/datasets/${encodeURIComponent(s)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});return u(await o.json())},async delete(s){await _(t,`/api/datasets/${encodeURIComponent(s)}`,{method:"DELETE"});},taskFiles(s,a){let o=ne(s);if(o.version===void 0)throw new Error(`datasets().taskFiles() needs "name@version" \u2014 a task's files belong to one immutable version (got "${s}")`);return Sn(t,`/api/datasets/${encodeURIComponent(o.name)}/versions/${encodeURIComponent(o.version)}/tasks/${encodeURIComponent(a)}`)}}}function En(e){let t=I("agents",e);return {async create(n){let r=He("agents().create()",{...n,org:n.org??t.org}),i=r.directory?await H(t,"/api/agents",{fields:r.fields,directory:r.directory,filename:"source.tar.gz"}):await _(t,"/api/agents",{method:"POST",body:F(r.fields)});return se(await i.json())},list(n){return P(async r=>{let i=await _(t,`/api/agents${w(r,{scope:n?.scope})}`);return R(await i.json(),se)},n)},async get(n){let r=await _(t,`/api/agents/${encodeURIComponent(n)}`);return se(await r.json())},async delete(n){await _(t,`/api/agents/${encodeURIComponent(n)}`,{method:"DELETE"});},async upsert(n,r){let i=He("agents().upsert()",{...r,name:n,org:r.org??t.org}),l=i.directory?await H(t,`/api/agents/${encodeURIComponent(n)}`,{method:"PUT",fields:i.fields,directory:i.directory,filename:"source.tar.gz"}):await _(t,`/api/agents/${encodeURIComponent(n)}`,{method:"PUT",body:F(i.fields)});return se(await l.json())}}}function He(e,t){let n=typeof t.install_script=="string",r=typeof t.directory=="string";if(n&&r)throw new Error(`${e} takes EITHER an install script ({ install_script }) or a local directory ({ directory }), not both`);if(!n&&!r)throw new Error(`${e} requires either an install script ({ install_script }) or a local directory ({ directory }), plus run_command`);let i={name:t.name,org:t.org,run_command:t.run_command,...t.env!==void 0?{env:JSON.stringify(t.env)}:{},...n?{install_script:t.install_script}:{}};return r?{fields:i,directory:t.directory}:{fields:i}}function ke(e){return {id:e.id,name:e.name,org:typeof e.org=="string"?e.org:null,digest:e.digest,size_bytes:e.size_bytes??0,description:e.description??null,ref:e.ref??`upload:${e.id}`,created_at:e.created_at}}function Pn(e){let t=I("skills",e);return {async upload(n,r){if(typeof n!="string"||!n.trim())throw new Error("skills().upload() requires a local skill directory path");let{basename:i,resolve:l}=await import('path'),d=i(l(n)),g=await(await H(t,"/api/skills",{fields:{name:d||void 0,org:r?.org??t.org},directory:n,filename:"skill.tar.gz"})).json();return (Array.isArray(g.skills)?g.skills:[g]).map(ke)},list(n){return P(async r=>{let i=await _(t,`/api/skills${w(r,{scope:n?.scope})}`);return R(await i.json(),ke)},n)},async get(n){let i=await(await _(t,`/api/skills/${encodeURIComponent(n)}`)).json();return {...ke(i),skill_md:i.skill_md??null}},async delete(n){await _(t,`/api/skills/${encodeURIComponent(n)}`,{method:"DELETE"});}}}function Cn(e){let t=I("jobs",e);async function n(s){let a=await _(t,`/api/jobs/${encodeURIComponent(s)}`);return E(await a.json())}async function r(s){let a=await _(t,`/api/jobs/imports/${encodeURIComponent(s)}`);return W(await a.json())}function i(s){return s.kind!=="check"?E(s):{...s,kind:"check",visibility:s.visibility==="LINK"?"LINK":"PRIVATE",cost_usd:Y(s.cost_usd),finished_at:s.finished_at??null}}async function l(s){let a=await _(t,`/api/jobs${w(s,{search:s?.search,scope:s?.scope,kind:s?.kind})}`);return R(await a.json(),i)}function d(s){let a=s.trials??{};return {task_name:s.task_name,source:s.source,trials:{total:a.total??0,byStatus:a.byStatus??{}},mean_reward:s.mean_reward??null,cost_usd:s.cost_usd??null,check:s.check&&typeof s.check=="object"&&!Array.isArray(s.check)?s.check:null}}async function u(s,a){let o=w(a,{status:a?.status?.length?a.status.join(","):void 0,dataset:a?.dataset}),c=await _(t,`/api/jobs/${encodeURIComponent(s)}/trials${o}`);return R(await c.json(),xe)}async function*g(s,a$1){let{onEvent:o,signal:c}=a$1??{},m=a$1?.reconnectDelayMs??Xt,p=a$1?.maxReconnectDelayMs??X,b=null,f=false,k=false,y=m;for(;!f;){J(c);let v;try{v=await fetch(`${t.baseUrl}/api/jobs/${encodeURIComponent(s)}/events`,{headers:{Authorization:`Bearer ${t.apiKey}`,Accept:"text/event-stream",...b!==null?{"Last-Event-ID":String(b)}:{}},signal:c});}catch(S){if(qe(S,c))throw S;await x(y,c),y=Math.min(y*2,p);continue}if(!v.ok){if(v.status===429||v.status>=500){let S=await v.text().catch(()=>""),C=a(S,v)??0,U=C>0?Math.max(C*1e3,y):y;await x(U,c),y=Math.min(y*2,p);continue}await Z(v);}if(!v.body)throw new Error("Event stream response has no body");let h=false,$=[],mt=Ze(S=>{let C=Number(S.id),U={seq:Number.isInteger(C)?C:-1,type:S.event||"message",data:S.data?ot(S.data):{}};Number.isInteger(C)&&(b=C),h=true,Zt.has(U.type)&&(f=true),$.push(U);}),Ce=v.body.getReader(),_t=new TextDecoder;try{for(;!f;){let{done:S,value:C}=await Ce.read();if(S)break;mt.push(_t.decode(C,{stream:!0}));for(let U of $)o?.(U),yield U;$.length=0;}}catch(S){if(qe(S,c))throw S}finally{await Ce.cancel().catch(()=>{});}if(f)break;J(c);let Ie=await n(s);if(Qt.has(Ie.status)){if(k)return Ie;k=true;continue}h&&(y=m),await x(y,c),y=Math.min(y*2,p);}return n(s)}return {async start(s,a){let o=s.org??t.org,c=o!==void 0?{...s,org:o}:s,m=await _(t,"/api/jobs",{method:"POST",headers:{"Content-Type":"application/json",...a?.idempotencyKey?{"Idempotency-Key":a.idempotencyKey}:{}},body:JSON.stringify(c)});return E(await m.json())},get:n,list(s){return P(a=>l({...a,search:s?.search,scope:s?.scope,kind:s?.kind}),s)},trials(s,a){return P(o=>u(s,{...o,status:a?.status,dataset:a?.dataset}),a)},tasks(s,a){return P(async o=>{let c=await _(t,`/api/jobs/${encodeURIComponent(s)}/tasks${w(o)}`);return R(await c.json(),d)},a)},watch(s,a){return An(g(s,a))},async cancel(s){let a=await _(t,`/api/jobs/${encodeURIComponent(s)}/cancel`,{method:"POST"});return E(await a.json())},async compare(s){let a=s.map(encodeURIComponent).join(","),c=await(await _(t,`/api/jobs/compare?ids=${a}`)).json();return {jobs:(c.jobs||[]).map(yn),taskMatrix:(c.taskMatrix||[]).map(kn)}},async resume(s,a,o){let c=await _(t,`/api/jobs/${encodeURIComponent(s)}/resume`,{method:"POST",headers:{"Content-Type":"application/json",...o?.idempotencyKey?{"Idempotency-Key":o.idempotencyKey}:{}},body:JSON.stringify(a??{})});return E(await c.json())},async retry(s,a,o){let c=await _(t,`/api/jobs/${encodeURIComponent(s)}/retry`,{method:"POST",headers:{"Content-Type":"application/json",...o?.idempotencyKey?{"Idempotency-Key":o.idempotencyKey}:{}},body:JSON.stringify(a??{})});return E(await c.json())},async regrade(s,a){let o={};a?.statuses?.length&&(o.statuses=a.statuses),a?.task_name!==void 0&&(o.task_name=a.task_name);let c=await _(t,`/api/jobs/${encodeURIComponent(s)}/regrade`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});return E(await c.json())},async analyze(s,a){let o=await _(t,`/api/jobs/${encodeURIComponent(s)}/analyze`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a??{})});return E(await o.json())},async watchAnalysis(s,a){let o=a?.pollIntervalMs??Q,c=o,m=null;for(;;){J(a?.signal);let p;try{p=await n(s);}catch(y){if(y instanceof A&&(y.status===429||y.status===503)){await x(Math.max((y.retryAfterSec??0)*1e3,c),a?.signal),c=Math.min(c*2,X);continue}throw y}let b=p.stats.analysis??null,f=b?JSON.stringify([b.n_completed,b.n_failed,b.n_pending]):null,k=f!==null&&f!==m;if(k&&(m=f,a?.onStats?.(p)),b?.n_pending===0)return p;c=k?o:Math.min(c*2,X),await x(c,a?.signal);}},download:(async(s,a)=>ce(t,`/api/jobs/${encodeURIComponent(s)}/download`,a,`job-${s}-results.tar.gz`)),async upload(s,a){let o={dataset:a?.dataset};if(typeof s=="object"&&s!==null){if(typeof s.archive_url!="string"||!s.archive_url.trim())throw new Error("jobs().upload() with a URL source requires { archive_url: 'https://\u2026' }");let h=await _(t,"/api/jobs/upload",{method:"POST",body:F({...o,archive_url:s.archive_url})});return W(await h.json())}if(typeof s!="string"||!s.trim())throw new Error("jobs().upload() requires a job directory (or .tar.gz archive) path, or { archive_url }");let c={fields:o,filename:"job.tar.gz",resumableThreshold:b,resumablePath:"/api/jobs/upload/uploads",...a?.onUploadProgress!==void 0?{onBytes:a.onUploadProgress}:{},...a?.onRegistered!==void 0?{onRegistered:a.onRegistered}:{}},{stat:m}=await import('fs/promises');if((await m(s).catch(()=>null))?.isFile()){let h=await tt(t,"/api/jobs/upload",s,c);return W(await h.json())}let{existsSync:b$1}=await import('fs'),{join:f,resolve:k}=await import('path'),y=k(s);for(let h of ["result.json","config.json"])if(!b$1(f(y,h)))throw new Error(`${y} does not contain ${h}`);let v=await H(t,"/api/jobs/upload",{...c,directory:y});return W(await v.json())},getImport:r,async watchImport(s,a){let o=a?.pollIntervalMs??Q,c=null,m=null;for(;;){J(a?.signal);let p;try{p=await r(s);}catch(f){if(f instanceof A&&(f.status===429||f.status===503)){await x(Math.max((f.retryAfterSec??0)*1e3,o),a?.signal);continue}throw f}let b=`${p.status}${p.receiving?":receiving":""}`;if(b!==c&&(c=b,a?.onStatus?.(p)),p.progress!==null){let f=JSON.stringify(p.progress);f!==m&&(m=f,a?.onProgress?.(p.progress,p));}if(p.status==="COMPLETED"||p.status==="FAILED")return p;await x(o,a?.signal);}},listImports(s){return P(async a=>{let o=new URLSearchParams;a.limit!==void 0&&o.set("limit",String(a.limit)),a.cursor!==void 0&&o.set("cursor",a.cursor),s?.status!==void 0&&o.set("status",s.status);let c=o.toString()?`?${o}`:"",m=await _(t,`/api/jobs/imports${c}`);return R(await m.json(),W)},s)},async delete(s){let o=await(await _(t,`/api/jobs/${encodeURIComponent(s)}`,{method:"DELETE"})).json();return {job_id:o.job_id??s,trials_deleted:o.trials_deleted??0,analyses_deleted:o.analyses_deleted??0}},async share(s,a){let o=await _(t,`/api/jobs/${encodeURIComponent(s)}/share`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});return T(await o.json())},async unshare(s,a){let o=await _(t,`/api/jobs/${encodeURIComponent(s)}/unshare`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});return T(await o.json())},async shares(s){let a=await _(t,`/api/jobs/${encodeURIComponent(s)}/shares`);return T(await a.json())},async grep(s,a,o){let c=await _(t,`/api/jobs/${encodeURIComponent(s)}/grep${w(o,{q:a,type:o?.type})}`);return R(await c.json(),vn)}}}function In(e){let t=I("trials",e);async function n(i,l){let d=await _(t,`/api/trials/${encodeURIComponent(i)}/trace${w(l,{type:l?.type,grep:l?.grep,tail:l?.tail!==void 0?String(l.tail):void 0})}`);return R(await d.json(),Xe)}async function r(i,l){let u=await(await _(t,`/api/trials/${encodeURIComponent(i)}/trace?stream=${l}`)).json();return l==="agent-home"?u.files??null:u.log??null}return {async get(i){let l=await _(t,`/api/trials/${encodeURIComponent(i)}`);return xe(await l.json())},trace:n,artifact:r,async*traceEvents(i,l){let d=l?.cursor;for(;;){let u=await n(i,{...l,cursor:d});for(let g of u.items)yield g;if(!u.nextCursor)return;d=u.nextCursor;}},async regrade(i){let l=await _(t,`/api/trials/${encodeURIComponent(i)}/regrade`,{method:"POST"});return E(await l.json())},async retry(i,l){let d=await _(t,`/api/trials/${encodeURIComponent(i)}/retry`,{method:"POST",...l?.idempotencyKey?{headers:{"Idempotency-Key":l.idempotencyKey}}:{}});return E(await d.json())},async stop(i){let d=await(await _(t,"/api/trials/stop",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({trial_ids:i})})).json();return {stopped:(d.stopped??[]).map(xe),stopped_analyses:(d.stopped_analyses??[]).map(oe).filter(u=>u!==null),already_terminal:d.already_terminal??[],not_found:d.not_found??[]}},async files(i,l){let d=await _(t,`/api/trials/${encodeURIComponent(i)}/files${w(l)}`);return R(await d.json(),u=>({path:u.path,size_bytes:u.size_bytes}))},async file(i,l,d){let u=l.split("/").filter(Boolean).map(encodeURIComponent).join("/"),g=Te(d),s=await _(t,`/api/trials/${encodeURIComponent(i)}/files/${u}`,g?{headers:{Range:g}}:void 0);return Buffer.from(await s.arrayBuffer())},filesystem:i=>we(t,`/api/trials/${encodeURIComponent(i)}`)}}function it(e){let t=e?.update;return typeof t?.sessionUpdate=="string"?t.sessionUpdate:"unknown"}function On(e){let t=I("analyses",e),n=new Set;async function r(d){if(n.has(d))return;let u;try{u=await _(t,`/api/traces/trials/${encodeURIComponent(d)}/artifacts?what=analysis`);}catch(g){throw g instanceof A&&g.status===400?new Error(`"${d}" is not an analysis run (the artifacts door refuses it typed) \u2014 for a trial's artifacts use trials()`):g}await u.text().catch(()=>{}),n.add(d);}async function i(d,u){await r(d);let s=await(await _(t,`/api/traces/trials/${encodeURIComponent(d)}/artifacts?what=${u}`)).json();return u==="agent-home"?s.files??null:s.log??null}async function l(d){let u=await _(t,`/api/analyses${w(d,{scope:d?.scope,job:d?.job,status:d?.status&&d.status.length>0?d.status.join(","):void 0})}`);return R(await u.json(),g=>{let s=oe(g);if(s===null)throw new Error("The analyses list served an unreadable analysis object");return s})}return {list(d){return P(u=>l({...u,scope:d?.scope,job:d?.job,status:d?.status}),d)},async get(d){let g=await(await _(t,`/api/traces/trials/${encodeURIComponent(d)}/artifacts?what=analysis`)).json(),s=oe(g.analysis);if(s===null)throw new Error(`The analysis feed served no readable analysis object for "${d}"`);return n.add(d),s},async transcript(d,u){let g=u?.since;if(g!==void 0&&(!Number.isInteger(g)||g<0))throw new Error(`transcript() since must be a non-negative integer, got ${g}`);let a=await(await _(t,`/api/traces/trials/${encodeURIComponent(d)}/events`+(g!==void 0?`?since=${g}`:""))).json(),o=a.session??{};if(o.kind!=="analysis"){let p=typeof o.kind=="string"?o.kind:"trial";throw new Error(`"${d}" is not an analysis run (the feed resolves it as a ${p}) \u2014 for a trial's trace use trials()`)}let c=g??0,m=Array.isArray(a.events)?a.events:[];return {id:typeof o.id=="string"?o.id:d,analyzed_trial_id:typeof o.analyzedTrialId=="string"?o.analyzedTrialId:null,job_id:typeof o.jobId=="string"?o.jobId:null,task_name:typeof o.tag=="string"?o.tag:null,model_name:typeof o.model=="string"?o.model:null,sandbox_provider:typeof o.provider=="string"?o.provider:null,sandbox_id:typeof o.sandboxId=="string"?o.sandboxId:null,is_ended:o.isEnded===true,total:typeof a.total=="number"?a.total:c+m.length,events:m.map((p,b)=>({seq:c+b,type:it(p),data:p&&typeof p=="object"&&!Array.isArray(p)?p:{}})),gateway_calls:Qe(a.gatewayCalls),stored_at:z(a.storedAt,m.length,"Analysis transcript response")}},artifact:i,download:(async(d,u)=>ce(t,`/api/analyses/${encodeURIComponent(d)}/download`,u,`analysis-${d}.tar.gz`)),async defaults(){return await(await _(t,"/api/analyses/defaults")).json()},filesystem:d=>we(t,`/api/analyses/${encodeURIComponent(d)}`)}}function re(e){if(!e||typeof e!="object"||Array.isArray(e))throw new Error("The checks surface served an unreadable check object");let t=e,n=Array.isArray(t.results)?t.results.filter(i=>!!i&&typeof i=="object"&&!Array.isArray(i)):[],r=t.visibility==="LINK"?"LINK":"PRIVATE";return {...t,visibility:r,results:n}}function Dn(e){let t=I("checks",e);async function n(u){let g=await _(t,`/api/checks/${encodeURIComponent(u)}`);return re(await g.json())}async function r(u){let g=await _(t,`/api/checks${w(u,{scope:u?.scope,status:u?.status&&u.status.length>0?u.status.join(","):void 0,dataset:u?.dataset})}`);return R(await g.json(),re)}let i=new Set;async function l(u){let g;try{g=await _(t,`/api/traces/trials/${encodeURIComponent(u)}/artifacts?what=task-check`);}catch(o){throw o instanceof A&&o.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()`):o}let a=(await g.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 i.add(u),a}async function d(u,g){i.has(u)||await l(u);let a=await(await _(t,`/api/traces/trials/${encodeURIComponent(u)}/artifacts?what=${g}`)).json();return g==="agent-home"?a.files??null:a.log??null}return {async create(u){let{source:g,onUploadProgress:s,...a}=u,o={config:JSON.stringify(a)};if("dataset"in g){if(typeof g.dataset!="string"||g.dataset.trim()==="")throw new Error('checks().create(): source.dataset must be "name" or "name@version"');let y=await _(t,"/api/checks",{method:"POST",body:F({...o,dataset:g.dataset.trim()})});return re(await y.json())}let{existsSync:c,statSync:m}=await import('fs'),{basename:p,resolve:b}=await import('path'),f=b(g.directory);if(!c(f)||!m(f).isDirectory())throw new Error(`checks().create(): Path '${g.directory}' does not exist or is not a directory`);let k=await H(t,"/api/checks",{directory:f,fields:o,filename:`${p(f)||"task"}.tar.gz`,...s!==void 0?{onBytes:s}:{}});return re(await k.json())},get:n,async defaults(){return await(await _(t,"/api/checks/defaults")).json()},list(u){return P(g=>r({...g,scope:u?.scope,status:u?.status,dataset:u?.dataset}),u)},task:l,async transcript(u,g){let s=g?.since;if(s!==void 0&&(!Number.isInteger(s)||s<0))throw new Error(`transcript() since must be a non-negative integer, got ${s}`);let o=await(await _(t,`/api/traces/trials/${encodeURIComponent(u)}/events`+(s!==void 0?`?since=${s}`:""))).json(),c=o.session??{};if(c.kind!=="check"){let b=typeof c.kind=="string"?c.kind:"trial";throw new Error(`"${u}" is not a task check (the feed resolves it as a ${b}) \u2014 for a trial's trace use trials(), for an analysis's use analyses()`)}let m=s??0,p=Array.isArray(o.events)?o.events:[];return {id:typeof c.id=="string"?c.id:u,check_id:typeof c.checkId=="string"?c.checkId:null,dataset:typeof c.datasetRef=="string"?c.datasetRef:null,task_name:typeof c.tag=="string"?c.tag:null,model_name:typeof c.model=="string"?c.model:null,sandbox_provider:typeof c.provider=="string"?c.provider:null,sandbox_id:typeof c.sandboxId=="string"?c.sandboxId:null,is_ended:c.isEnded===true,total:typeof o.total=="number"?o.total:m+p.length,events:p.map((b,f)=>({seq:m+f,type:it(b),data:b&&typeof b=="object"&&!Array.isArray(b)?b:{}})),gateway_calls:Qe(o.gatewayCalls),stored_at:z(o.storedAt,p.length,"Task check transcript response")}},artifact:d,download:(async(u,g)=>ce(t,`/api/checks/${encodeURIComponent(u)}/download`,g,`check-${u}.tar.gz`)),async share(u,g){let s=await _(t,`/api/checks/${encodeURIComponent(u)}/share`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(g)});return T(await s.json())},async unshare(u,g){let s=await _(t,`/api/checks/${encodeURIComponent(u)}/unshare`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(g)});return T(await s.json())},async shares(u){let g=await _(t,`/api/checks/${encodeURIComponent(u)}/shares`);return T(await g.json())},async watch(u,g){let s=g?.pollIntervalMs??Q,a=s,o=null;for(;;){J(g?.signal);let c;try{c=await n(u);}catch(b){if(b instanceof A&&(b.status===429||b.status===503)){await x(Math.max((b.retryAfterSec??0)*1e3,a),g?.signal),a=Math.min(a*2,X);continue}throw b}let m=JSON.stringify(c.results.map(b=>[b.task_name,b.status])),p=m!==o;if(p&&(o=m,g?.onProgress?.(c)),c.status==="completed")return c;a=p?s:Math.min(a*2,X),await x(a,g?.signal);}},taskFilesystem:(u,g)=>we(t,`/api/checks/${encodeURIComponent(u)}/tasks/${encodeURIComponent(g)}`)}}function Ms(e){let t=I("auth",e);return {async status(){let r=await(await _(t,"/api/auth/status")).json(),i=r.key??{};return {user_id:r.user_id,email:r.email??null,key:{id:i.id,label:i.label??null,created_at:i.created_at,last_used_at:i.last_used_at??null}}}}}function Ln(e){return {user_id:e.user_id,email:e.email,role:e.role==="owner"?"owner":"member",joined_at:e.joined_at}}function Jn(e){return {invite_id:e.invite_id,expires_at:typeof e.expires_at=="string"?e.expires_at:null,max_uses:typeof e.max_uses=="number"?e.max_uses:null,uses:typeof e.uses=="number"?e.uses:0,revoked_at:typeof e.revoked_at=="string"?e.revoked_at:null,created_at:e.created_at,token:e.token}}function ae(e){return {org_id:e.org_id,slug:e.slug,display_name:e.display_name,personal:e.personal===true,...e.role==="owner"||e.role==="member"?{role:e.role}:{},created_at:e.created_at}}function Un(e){let t=e.quota??{},n=e.usage??{},r=i=>typeof i=="number"?i:0;return {...ae(e),member_count:r(e.member_count),quota:{max_concurrent_trials:r(t.max_concurrent_trials),max_queued_trials:r(t.max_queued_trials),max_concurrent_imports:r(t.max_concurrent_imports),max_concurrent_analyses:r(t.max_concurrent_analyses),max_concurrent_sessions:r(t.max_concurrent_sessions),monthly_budget_usd:typeof t.monthly_budget_usd=="number"?t.monthly_budget_usd:null,max_concurrent_sandboxes_e2b:r(t.max_concurrent_sandboxes_e2b),max_concurrent_sandboxes_daytona:r(t.max_concurrent_sandboxes_daytona),max_concurrent_sandboxes_modal:r(t.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 jn(e){let t=I("orgs",e);return {async list(){let r=await(await _(t,"/api/orgs")).json();return (Array.isArray(r.items)?r.items:[]).map(i=>ae(i))},async get(n){let r=await _(t,`/api/orgs/${encodeURIComponent(n)}`);return Un(await r.json())},async create(n,r){let i=await _(t,"/api/orgs",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({slug:n,...r?.displayName!==void 0?{display_name:r.displayName}:{}})});return ae(await i.json())},async invite(n){let r=await _(t,`/api/orgs/${encodeURIComponent(n)}/invites`,{method:"POST"});return Jn(await r.json())},async join(n){let i=await(await _(t,"/api/orgs/invites/accept",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:n})})).json();return {org:ae(i.org??{}),already_member:i.already_member===true}},async members(n){let i=await(await _(t,`/api/orgs/${encodeURIComponent(n)}/members`)).json();return (Array.isArray(i.items)?i.items:[]).map(l=>Ln(l))}}}function ot(e){try{let t=JSON.parse(e);return t&&typeof t=="object"?t:{value:t}}catch{return {raw:e}}}function Bs(e){let t,n,r,i,l,d,u,g;return {get datasets(){return t??=wn(e)},get agents(){return n??=En(e)},get jobs(){return r??=Cn(e)},get trials(){return i??=In(e)},get analyses(){return l??=On(e)},get checks(){return d??=Dn(e)},get skills(){return u??=Pn(e)},get orgs(){return g??=jn(e)},meta(){return Fn(e)}}}async function Fn(e){let t=(e?.baseUrl||process.env.EVOLVE_DASHBOARD_URL||D).replace(/\/$/,""),n=await fetch(`${t}/api/meta`);return n.ok||await Z(n),await n.json()}function Ee(e){return e.delivery==="direct"}var ct=18181,O="/tmp/evolve-managed-secrets",dt=`${O}/proxy.py`,Pe=`${O}/config.json`,N=`${O}/ca.crt`,de=`${O}/ca.key`,G=`${O}/ca-bundle.crt`,gt=["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 Ws(){return [...gt]}var Ys=String.raw`#!/usr/bin/env python3
11
11
  import base64
12
12
  import json
13
13
  import os