Buckets:

download
raw
9.54 kB
import{s as Je,n as Ue,o as ve}from"../chunks/scheduler.2b22cead.js";import{S as ge,i as be,e as d,s as l,c as i,h as Ce,a as f,d as n,b as a,f as we,g as r,j as q,k as he,l as _e,m as s,n as o,t as m,o as p,p as u}from"../chunks/index.1a0e8013.js";import{C as ke,H as x,E as je}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.b9cb86dd.js";import{C as S}from"../chunks/CodeBlock.f113894f.js";function Ie(ue){let c,H,L,Q,y,G,$,X,M,de=`<code>terminus_env</code> is a single-tool coding environment backed by E2B Code
Interpreter. Each OpenEnv episode creates a fresh E2B sandbox, runs optional
setup commands, keeps shell state and files isolated for that episode, and runs
optional verify commands when the agent submits a final answer.`,N,T,fe=`The tool shape follows the Terminus-style “one tool” idea: agents do their work
through a single terminal entrypoint rather than a notebook/toolbox surface.`,A,w,z,h,ce=`<li><code>terminal(command=&quot;&quot;, final_answer=&quot;&quot;)</code>: run a shell command inside the
session sandbox, or submit a final answer and run verification.</li>`,P,J,Y,U,F,v,K,g,D,b,ye=`The API and custom terminal web UI are served on port 8000. The UI is mounted
at <code>/web</code>.`,O,C,ee,_,te,k,ne,j,$e="<li><code>E2B_API_KEY</code>: required when resetting an episode.</li> <li><code>MAX_CONCURRENT_ENVS</code>: maximum concurrent WebSocket sessions. Defaults to <code>4</code>.</li>",se,I,le,Z,Me=`<code>reset()</code> accepts either <code>setup</code> / <code>verify</code> or <code>setup_scripts</code> /
<code>verify_scripts</code>.`,ae,B,ie,V,Te=`Setup failure ends the reset response with <code>done=True</code> and returns captured
setup results. Verify commands run when <code>terminal(final_answer=&quot;...&quot;)</code> is
called. Reward defaults to <code>passed_verify_commands / total_verify_commands</code>. A
verify command can override this by writing a float to:`,re,E,oe,W,me,R,pe;return y=new ke({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),$=new x({props:{title:"Terminus Environment",local:"terminus-environment",headingTag:"h1"}}),w=new x({props:{title:"Tool",local:"tool",headingTag:"h2"}}),J=new x({props:{title:"Quick Start",local:"quick-start",headingTag:"h2"}}),U=new S({props:{code:"ZnJvbSUyMHRlcm1pbnVzX2VudiUyMGltcG9ydCUyMFRlcm1pbnVzRW52JTBBJTBBd2l0aCUyMFRlcm1pbnVzRW52KGJhc2VfdXJsJTNEJTIyaHR0cCUzQSUyRiUyRmxvY2FsaG9zdCUzQTgwMDAlMjIpLnN5bmMoKSUyMGFzJTIwZW52JTNBJTBBJTIwJTIwJTIwJTIwZW52LnJlc2V0KCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNldHVwJTNEJTVCJTIybWtkaXIlMjAtcCUyMCUyRmhvbWUlMkZ1c2VyJTJGd29yayUyMiU1RCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHZlcmlmeSUzRCU1QiUyMnRlc3QlMjAtZiUyMCUyRmhvbWUlMkZ1c2VyJTJGd29yayUyRmFuc3dlci50eHQlMjIlNUQlMkMlMEElMjAlMjAlMjAlMjApJTBBJTIwJTIwJTIwJTIwcHJpbnQoZW52LmNhbGxfdG9vbCglMjJ0ZXJtaW5hbCUyMiUyQyUyMGNvbW1hbmQlM0QlMjJlY2hvJTIwZG9uZSUyMCUzRSUyMCUyRmhvbWUlMkZ1c2VyJTJGd29yayUyRmFuc3dlci50eHQlMjIpKSUwQSUyMCUyMCUyMCUyMHByaW50KGVudi5jYWxsX3Rvb2woJTIydGVybWluYWwlMjIlMkMlMjBmaW5hbF9hbnN3ZXIlM0QlMjJkb25lJTIyKSk=",highlighted:`<span class="hljs-keyword">from</span> terminus_env <span class="hljs-keyword">import</span> TerminusEnv
<span class="hljs-keyword">with</span> TerminusEnv(base_url=<span class="hljs-string">&quot;http://localhost:8000&quot;</span>).sync() <span class="hljs-keyword">as</span> env:
env.reset(
setup=[<span class="hljs-string">&quot;mkdir -p /home/user/work&quot;</span>],
verify=[<span class="hljs-string">&quot;test -f /home/user/work/answer.txt&quot;</span>],
)
<span class="hljs-built_in">print</span>(env.call_tool(<span class="hljs-string">&quot;terminal&quot;</span>, command=<span class="hljs-string">&quot;echo done &gt; /home/user/work/answer.txt&quot;</span>))
<span class="hljs-built_in">print</span>(env.call_tool(<span class="hljs-string">&quot;terminal&quot;</span>, final_answer=<span class="hljs-string">&quot;done&quot;</span>))`,lang:"python",wrap:!1}}),v=new x({props:{title:"Local Server",local:"local-server",headingTag:"h2"}}),g=new S({props:{code:"Y2QlMjBlbnZzJTJGdGVybWludXNfZW52JTBBRTJCX0FQSV9LRVklM0RlMmJfLi4uJTIwdXYlMjBydW4lMjAtLXByb2plY3QlMjAuJTIwc2VydmVy",highlighted:`<span class="hljs-built_in">cd</span> envs/terminus_env
E2B_API_KEY=e2b_... uv run --project . server`,lang:"bash",wrap:!1}}),C=new x({props:{title:"Docker",local:"docker",headingTag:"h2"}}),_=new S({props:{code:"Y2QlMjBlbnZzJTJGdGVybWludXNfZW52JTBBb3BlbmVudiUyMGJ1aWxkJTIwLXQlMjB0ZXJtaW51cy1lbnYlMEFkb2NrZXIlMjBydW4lMjAtcCUyMDgwMDAlM0E4MDAwJTIwLWUlMjBFMkJfQVBJX0tFWSUzRGUyYl8uLi4lMjB0ZXJtaW51cy1lbnY=",highlighted:`<span class="hljs-built_in">cd</span> envs/terminus_env
openenv build -t terminus-env
docker run -p 8000:8000 -e E2B_API_KEY=e2b_... terminus-env`,lang:"bash",wrap:!1}}),k=new x({props:{title:"Configuration",local:"configuration",headingTag:"h2"}}),I=new x({props:{title:"Setup and Verify Commands",local:"setup-and-verify-commands",headingTag:"h2"}}),B=new S({props:{code:"ZW52LnJlc2V0KCUwQSUyMCUyMCUyMCUyMHNldHVwJTNEJTVCJTIycGlwJTIwaW5zdGFsbCUyMC1xJTIwcHl0ZXN0JTIyJTVEJTJDJTBBJTIwJTIwJTIwJTIwdmVyaWZ5JTNEJTVCJTIycHl0ZXN0JTIwLXElMjAlMkZob21lJTJGdXNlciUyRndvcmslMkZ0ZXN0cyUyMiU1RCUyQyUwQSk=",highlighted:`env.reset(
setup=[<span class="hljs-string">&quot;pip install -q pytest&quot;</span>],
verify=[<span class="hljs-string">&quot;pytest -q /home/user/work/tests&quot;</span>],
)`,lang:"python",wrap:!1}}),E=new S({props:{code:"JTJGaG9tZSUyRnVzZXIlMkZsb2dzJTJGdmVyaWZpZXIlMkZyZXdhcmQudHh0",highlighted:"/home/user/logs/verifier/reward.txt",lang:"text",wrap:!1}}),W=new je({props:{source:"https://github.com/huggingface/openenv/blob/main/docs/source/environments/terminus.md"}}),{c(){c=d("meta"),H=l(),L=d("p"),Q=l(),i(y.$$.fragment),G=l(),i($.$$.fragment),X=l(),M=d("p"),M.innerHTML=de,N=l(),T=d("p"),T.textContent=fe,A=l(),i(w.$$.fragment),z=l(),h=d("ul"),h.innerHTML=ce,P=l(),i(J.$$.fragment),Y=l(),i(U.$$.fragment),F=l(),i(v.$$.fragment),K=l(),i(g.$$.fragment),D=l(),b=d("p"),b.innerHTML=ye,O=l(),i(C.$$.fragment),ee=l(),i(_.$$.fragment),te=l(),i(k.$$.fragment),ne=l(),j=d("ul"),j.innerHTML=$e,se=l(),i(I.$$.fragment),le=l(),Z=d("p"),Z.innerHTML=Me,ae=l(),i(B.$$.fragment),ie=l(),V=d("p"),V.innerHTML=Te,re=l(),i(E.$$.fragment),oe=l(),i(W.$$.fragment),me=l(),R=d("p"),this.h()},l(e){const t=Ce("svelte-u9bgzb",document.head);c=f(t,"META",{name:!0,content:!0}),t.forEach(n),H=a(e),L=f(e,"P",{}),we(L).forEach(n),Q=a(e),r(y.$$.fragment,e),G=a(e),r($.$$.fragment,e),X=a(e),M=f(e,"P",{"data-svelte-h":!0}),q(M)!=="svelte-16fmcf1"&&(M.innerHTML=de),N=a(e),T=f(e,"P",{"data-svelte-h":!0}),q(T)!=="svelte-8bj3cy"&&(T.textContent=fe),A=a(e),r(w.$$.fragment,e),z=a(e),h=f(e,"UL",{"data-svelte-h":!0}),q(h)!=="svelte-1se32n9"&&(h.innerHTML=ce),P=a(e),r(J.$$.fragment,e),Y=a(e),r(U.$$.fragment,e),F=a(e),r(v.$$.fragment,e),K=a(e),r(g.$$.fragment,e),D=a(e),b=f(e,"P",{"data-svelte-h":!0}),q(b)!=="svelte-1ebvpce"&&(b.innerHTML=ye),O=a(e),r(C.$$.fragment,e),ee=a(e),r(_.$$.fragment,e),te=a(e),r(k.$$.fragment,e),ne=a(e),j=f(e,"UL",{"data-svelte-h":!0}),q(j)!=="svelte-yzay9y"&&(j.innerHTML=$e),se=a(e),r(I.$$.fragment,e),le=a(e),Z=f(e,"P",{"data-svelte-h":!0}),q(Z)!=="svelte-17dd3ue"&&(Z.innerHTML=Me),ae=a(e),r(B.$$.fragment,e),ie=a(e),V=f(e,"P",{"data-svelte-h":!0}),q(V)!=="svelte-1v1wvz2"&&(V.innerHTML=Te),re=a(e),r(E.$$.fragment,e),oe=a(e),r(W.$$.fragment,e),me=a(e),R=f(e,"P",{}),we(R).forEach(n),this.h()},h(){he(c,"name","hf:doc:metadata"),he(c,"content",Ze)},m(e,t){_e(document.head,c),s(e,H,t),s(e,L,t),s(e,Q,t),o(y,e,t),s(e,G,t),o($,e,t),s(e,X,t),s(e,M,t),s(e,N,t),s(e,T,t),s(e,A,t),o(w,e,t),s(e,z,t),s(e,h,t),s(e,P,t),o(J,e,t),s(e,Y,t),o(U,e,t),s(e,F,t),o(v,e,t),s(e,K,t),o(g,e,t),s(e,D,t),s(e,b,t),s(e,O,t),o(C,e,t),s(e,ee,t),o(_,e,t),s(e,te,t),o(k,e,t),s(e,ne,t),s(e,j,t),s(e,se,t),o(I,e,t),s(e,le,t),s(e,Z,t),s(e,ae,t),o(B,e,t),s(e,ie,t),s(e,V,t),s(e,re,t),o(E,e,t),s(e,oe,t),o(W,e,t),s(e,me,t),s(e,R,t),pe=!0},p:Ue,i(e){pe||(m(y.$$.fragment,e),m($.$$.fragment,e),m(w.$$.fragment,e),m(J.$$.fragment,e),m(U.$$.fragment,e),m(v.$$.fragment,e),m(g.$$.fragment,e),m(C.$$.fragment,e),m(_.$$.fragment,e),m(k.$$.fragment,e),m(I.$$.fragment,e),m(B.$$.fragment,e),m(E.$$.fragment,e),m(W.$$.fragment,e),pe=!0)},o(e){p(y.$$.fragment,e),p($.$$.fragment,e),p(w.$$.fragment,e),p(J.$$.fragment,e),p(U.$$.fragment,e),p(v.$$.fragment,e),p(g.$$.fragment,e),p(C.$$.fragment,e),p(_.$$.fragment,e),p(k.$$.fragment,e),p(I.$$.fragment,e),p(B.$$.fragment,e),p(E.$$.fragment,e),p(W.$$.fragment,e),pe=!1},d(e){e&&(n(H),n(L),n(Q),n(G),n(X),n(M),n(N),n(T),n(A),n(z),n(h),n(P),n(Y),n(F),n(K),n(D),n(b),n(O),n(ee),n(te),n(ne),n(j),n(se),n(le),n(Z),n(ae),n(ie),n(V),n(re),n(oe),n(me),n(R)),n(c),u(y,e),u($,e),u(w,e),u(J,e),u(U,e),u(v,e),u(g,e),u(C,e),u(_,e),u(k,e),u(I,e),u(B,e),u(E,e),u(W,e)}}}const Ze='{"title":"Terminus Environment","local":"terminus-environment","sections":[{"title":"Tool","local":"tool","sections":[],"depth":2},{"title":"Quick Start","local":"quick-start","sections":[],"depth":2},{"title":"Local Server","local":"local-server","sections":[],"depth":2},{"title":"Docker","local":"docker","sections":[],"depth":2},{"title":"Configuration","local":"configuration","sections":[],"depth":2},{"title":"Setup and Verify Commands","local":"setup-and-verify-commands","sections":[],"depth":2}],"depth":1}';function Be(ue){return ve(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class xe extends ge{constructor(c){super(),be(this,c,Be,Ie,Je,{})}}export{xe as component};

Xet Storage Details

Size:
9.54 kB
·
Xet hash:
035a1a43f6cd50490caec021097570df813833c75404f5c0760b602da11cd3af

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.