Buckets:
| import{s as aa,n as oa,o as ra}from"../chunks/scheduler.2b22cead.js";import{S as Ma,i as ma,e as p,s,c as r,h as wa,a,d as l,b as i,f as Jl,g as M,j as o,k as hl,l as J,m as n,n as m,t as w,o as T,p as y}from"../chunks/index.1a0e8013.js";import{C as Ta,H as c,E as ya}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.84279b3a.js";import{C as u}from"../chunks/CodeBlock.67934f69.js";function ca(di){let h,bl,Ul,fl,U,v,wi,j,Ti,I,hi='<img src="https://raw.githubusercontent.com/huggingface/OpenEnv/main/envs/openapp_env/assets/OpenApps_OpenEnv_RL.png" alt="OpenApps Environment" width="800"/>',yi,wl,bi='<em>A web application simulation environment for OpenEnv that wraps the <a href="https://github.com/facebookresearch/OpenApps" rel="nofollow">OpenApps</a> framework and BrowserGym.</em>',vl,C,jl,g,fi="The OpenApp environment provides a simulated web application ecosystem where agents can interact with various apps (calendar, todo, messenger, maps) using browser-based actions.",Il,b,vi='<img src="https://raw.githubusercontent.com/huggingface/OpenEnv/main/envs/openapp_env/assets/openapps-demo.gif" alt="OpenApps Demo" width="800"/>',Cl,$,ji="This environment is ideal for:",gl,B,Ii="<li>Training and evaluating UI agents</li> <li>Testing web automation strategies</li> <li>Researching human-computer interaction</li> <li>Developing multimodal agents</li>",$l,A,Bl,G,Ci="<li><strong>Multiple Apps</strong>: Interact with calendar, todo list, messenger, and map applications</li> <li><strong>Browser-Based Actions</strong>: Click, fill forms, navigate, scroll, and more</li> <li><strong>Task-Based Evaluation</strong>: Optional task goals with automatic reward calculation</li> <li><strong>Configurable</strong>: Customize app configurations and behavior</li> <li><strong>BrowserGym Integration</strong>: Built on top of BrowserGym for robust browser interaction</li>",Al,k,Gl,x,kl,Z,gi="<strong>Key Components:</strong>",xl,E,$i="<li><strong>client.py</strong>: <code>OpenAppEnv</code> class that extends <code>HTTPEnvClient</code> for remote environment interaction</li> <li><strong>models.py</strong>: <code>OpenAppAction</code> and <code>OpenAppObservation</code> dataclasses with validation</li> <li><strong>server/openapp_environment.py</strong>: <code>OpenAppEnvironment</code> class that wraps BrowserGym and OpenApps</li> <li><strong>server/app.py</strong>: FastAPI server that exposes the environment via HTTP endpoints</li> <li><strong>server/Dockerfile</strong>: Self-contained Docker image with OpenApps server and FastAPI server</li> <li><strong>server/start.sh</strong>: Startup script that launches both OpenApps (port 5001) and FastAPI (port 8000)</li>",Zl,_,El,H,Bi="There are two ways to use the OpenApp environment: <strong>Docker mode</strong> (recommended, fully self-contained) or <strong>Local mode</strong> (requires manual server setup).",_l,R,Hl,W,Ai="Docker mode is fully self-contained and handles all dependencies automatically. No local installation required!",Rl,L,Gi="<strong>Step 1: Build the Docker image</strong>",Wl,Q,ki="The Docker image can be built in standalone mode using only public base images:",Ll,V,Ql,X,xi="<strong>Note for Meta/Corporate Networks:</strong> If you’re behind a proxy (HTTP_PROXY/HTTPS_PROXY set), you may need to bypass it for localhost connections:",Vl,F,Xl,S,Zi="<strong>What gets installed in Docker:</strong>",Fl,N,Ei="<li><strong>OpenEnv core</strong>: Installed as a dependency</li> <li><strong>OpenApps</strong>: Cloned from GitHub and installed (runs server inside container)</li> <li><strong>Core packages</strong>: FastAPI, Uvicorn, Pydantic, Requests (from pyproject.toml)</li> <li><strong>BrowserGym</strong>: For browser automation</li> <li><strong>Playwright</strong>: Chromium browser for UI interaction</li> <li><strong>Web interface support</strong>: Enabled by default via <code>ENABLE_WEB_INTERFACE=true</code></li>",Sl,Y,_i=`<strong>How Docker mode works:</strong> | |
| The Docker container runs TWO services automatically:`,Nl,O,Hi="<li><strong>OpenApps server</strong> (port 5001) - Provides the web applications (calendar, todo, messenger, maps)</li> <li><strong>FastAPI server</strong> (port 8000) - Exposes the OpenEnv HTTP API</li>",Yl,P,Ri="Both servers start automatically when the container launches. You only interact with port 8000.",Ol,z,Wi="<strong>Build details:</strong>",Pl,D,Li="<li>Base image: <code>python:3.11-slim</code> (public)</li> <li>Installation: Uses <code>pip install -e .</code> with pyproject.toml</li> <li>System deps: Playwright/Chromium dependencies for browser automation</li> <li>Size: ~5.7GB (includes Chromium browser and all dependencies)</li>",zl,q,Qi="<strong>Step 2: Run the example</strong>",Dl,K,ql,ee,Vi="<strong>Note:</strong> For Docker mode, you only need Python installed locally to run the example script. All environment dependencies are inside the Docker container.",Kl,te,en,le,Xi="Local mode requires manual setup of the OpenApps server. This mode is useful for development or when you need to customize the OpenApps configuration.",tn,ne,Fi="<strong>Prerequisites:</strong>",ln,se,Si="<li>Python 3.11+ installed</li> <li>UV package manager (recommended) or pip</li>",nn,ie,Ni="<strong>Step 1: Install openapp_env</strong>",sn,pe,pn,ae,Yi="This installs the environment package along with dependencies (BrowserGym, Playwright, etc.).",an,oe,Oi="<strong>Step 2: Install Playwright browsers</strong>",on,re,rn,Me,Pi="<strong>Step 3: Clone and set up OpenApps</strong> (for running the server)",Mn,me,mn,we,zi="<strong>Why do I need the OpenApps repository?</strong>",wn,Te,Di="The OpenApps Python package (installed via pip in Step 1) provides the library code, but the repository contains:",Tn,ye,qi="<li><code>launch.py</code> - The server startup script</li> <li><code>config/</code> - Hydra configuration files</li> <li>Application templates and assets</li>",yn,ce,Ki="In Docker mode, all of this is included in the container, so you don’t need to clone anything.",cn,ue,un,Je,Jn,Ue,ep="Docker mode is the easiest way - everything is automated:",Un,de,dn,he,tp="The Docker container automatically:",hn,be,lp="<li>Starts the OpenApps server (port 5001)</li> <li>Starts the FastAPI server (port 8000)</li> <li>Manages both services for you</li>",bn,fe,np="No manual server setup required!",fn,ve,sp="<strong>What happens inside the container:</strong>",vn,je,ip="When you run <code>from_docker_image()</code>, the following happens automatically:",jn,d,Ie,Tl,pp="<strong>Container Startup</strong> (<code>/app/start.sh</code> runs):",ci,Ce,ui,ge,yl,ap="<strong>Your client code</strong> interacts only with port 8000:",Ji,$e,Ui,cl,op="<p><strong>On cleanup</strong>, both servers are automatically stopped when the container is removed.</p>",In,Be,Cn,Ae,rp="For local usage, you need the OpenApps repository to run the server:",gn,Ge,Mp="<strong>Step 1: Clone OpenApps (if you haven’t already)</strong>",$n,ke,Bn,xe,mp="<strong>Step 2: Start OpenApps Server</strong> (in terminal 1)",An,Ze,wp="To run the server in <strong>headless mode</strong> (no browser window):",Gn,Ee,kn,_e,Tp="To run the server with <strong>visible browser</strong> for visualization:",xn,He,Zn,Re,yp="Wait for the server to start (you’ll see “Port 5001 is available” or similar).",En,We,cp="<strong>Step 3: Run your code</strong> (in terminal 2)",_n,Le,Hn,Qe,up="<strong>Note:</strong> The OpenApps Python package (installed via pip) provides the modules, but you need the full repository to run launch.py with its config files.",Rn,Ve,Wn,Xe,Ln,Fe,Qn,Se,Jp="There are multiple ways to see what the agent is doing:",Vn,Ne,Up="<strong>Option 1: Show Browser Window (Local Mode)</strong>",Xn,Ye,dp="The key is to start the OpenApps server with visualization enabled:",Fn,Oe,Sn,Pe,hp="<strong>Important:</strong> The browser visualization is controlled by the OpenApps server, not the client. You must launch the server with <code>browsergym_env_args.headless=False</code> to see the browser window.",Nn,ze,bp="<strong>Option 2: Access Web Interface Directly</strong>",Yn,De,fp="While the OpenApps server is running, open your browser to:",On,qe,vp="<li>Main page: <code>http://localhost:5001</code></li> <li>Calendar: <code>http://localhost:5001/calendar</code></li> <li>Todo: <code>http://localhost:5001/todo</code></li> <li>Messenger: <code>http://localhost:5001/messages</code></li> <li>Maps: <code>http://localhost:5001/maps</code></li>",Pn,Ke,jp="<strong>Option 3: Docker Web Interface</strong>",zn,et,Ip="When running in Docker mode, you can also access a web interface for manual testing:",Dn,tt,qn,lt,Cp="<strong>Note:</strong> In Docker mode, the OpenApps server runs inside the container and is not directly accessible from your host machine. The FastAPI server at port 8000 acts as a proxy to interact with OpenApps.",Kn,nt,es,st,ts,it,ls,pt,gp="The environment supports the following action types:",ns,at,$p="<li><p><strong>click</strong>: Click on an element</p> <ul><li>Required: <code>bid</code> (BrowserGym element ID)</li></ul></li> <li><p><strong>fill</strong>: Fill a text input field</p> <ul><li>Required: <code>bid</code>, <code>text</code></li></ul></li> <li><p><strong>select_option</strong>: Select from dropdown</p> <ul><li>Required: <code>bid</code>, <code>value</code></li></ul></li> <li><p><strong>goto</strong>: Navigate to a URL</p> <ul><li>Required: <code>url</code></li></ul></li> <li><p><strong>scroll</strong>: Scroll the page</p> <ul><li>Required: <code>direction</code> (“up” or “down”)</li></ul></li> <li><p><strong>send_keys</strong>: Send keyboard input</p> <ul><li>Required: <code>text</code></li></ul></li> <li><p><strong>noop</strong>: No operation</p></li>",ss,ot,is,rt,Bp="Each observation includes:",ps,Mt,Ap="<li><strong>html</strong>: Current page HTML content</li> <li><strong>url</strong>: Current page URL</li> <li><strong>open_pages_urls</strong>: List of all open page URLs</li> <li><strong>active_page_index</strong>: Index of currently active page</li> <li><strong>screenshot</strong>: Base64-encoded screenshot (optional)</li> <li><strong>axtree_txt</strong>: Accessibility tree for element interaction</li> <li><strong>app_state</strong>: Current state of all apps (calendar events, todos, messages, etc.)</li> <li><strong>task_info</strong>: Information about current task (if using tasks)</li> <li><strong>last_action_error</strong>: Error message if last action failed</li>",as,mt,os,wt,rs,Tt,Ms,yt,Gp="<strong>Note:</strong> OpenApps is automatically detected from the installed Python package. You can optionally override with <code>openapps_path</code> parameter or <code>OPENAPPS_PATH</code> environment variable if needed.",ms,ct,ws,ut,kp="The environment can be configured with specific tasks from OpenApps. Tasks define:",Ts,Jt,xp="<li>Goal state (e.g., “Add a meeting with Dennis to the calendar”)</li> <li>Reward function based on app state changes</li> <li>Success criteria</li>",ys,Ut,Zp='See <a href="https://facebookresearch.github.io/OpenApps/" rel="nofollow">OpenApps documentation</a> for available tasks.',cs,dt,us,ht,Js,bt,Us,ft,ds,vt,hs,jt,Ep="The server will start at <code>http://localhost:8000</code>",bs,It,fs,Ct,vs,gt,js,$t,_p="This environment integrates:",Is,Bt,Hp='<li><a href="https://github.com/facebookresearch/OpenApps" rel="nofollow">OpenApps</a> - Web application simulation framework</li> <li><a href="https://github.com/ServiceNow/BrowserGym" rel="nofollow">BrowserGym</a> - Browser automation environment</li>',Cs,At,gs,Gt,$s,kt,Rp="<strong>Error: <code>Container did not become ready</code></strong>",Bs,xt,Wp="If you’re behind a corporate proxy (Meta/Facebook networks), set <code>NO_PROXY</code>:",As,Zt,Gs,Et,Lp="<strong>Error: <code>Environment variable 'USER' not found</code></strong>",ks,_t,Qp="This is automatically handled in the Dockerfile with <code>ENV USER=root</code>. If you see this, rebuild the image.",xs,Ht,Vp="<strong>Container exits immediately</strong>",Zs,Rt,Xp="Check the logs to see which server failed:",Es,Wt,_s,Lt,Fp="Common causes:",Hs,Qt,Sp="<li>OpenApps server failed to start (check for port conflicts)</li> <li>Missing dependencies (rebuild with <code>--no-cache</code>)</li>",Rs,Vt,Ws,Xt,Np="<strong>Error: <code>OPENAPPS_URL not set</code></strong>",Ls,Ft,Yp="Set the environment variable before running:",Qs,St,Vs,Nt,Op="<strong>Error: <code>Connection refused to localhost:5001</code></strong>",Xs,Yt,Pp="Make sure the OpenApps server is running:",Fs,Ot,Ss,Pt,zp="<strong>Browser visualization not working</strong>",Ns,zt,Dp="The visualization is controlled by the <strong>server</strong>, not the client:",Ys,Dt,Os,qt,Ps,Kt,qp="<strong>Docker container is slow</strong>",zs,el,Kp="The container runs both a full Chromium browser and web applications. For faster performance:",Ds,tl,ea="<li>Increase Docker memory allocation (6GB+ recommended)</li> <li>Use headless mode (default)</li> <li>Reduce <code>max_steps</code> in environment configuration</li>",qs,ll,ta="<strong>Large Docker image size</strong>",Ks,nl,la="The image is ~5.7GB due to:",ei,sl,na="<li>Chromium browser (~1.5GB)</li> <li>OpenApps dependencies (~2GB)</li> <li>BrowserGym and ML libraries (~2GB)</li>",ti,il,sa="This is expected for a full browser automation environment.",li,pl,ni,al,ia="BSD 3-Clause License (see LICENSE file in OpenEnv root directory)",si,ol,ii,rl,pa="If you use this environment in your research, please cite both OpenEnv and OpenApps:",pi,Ml,ai,ml,oi,dl,ri;return v=new Ta({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),j=new c({props:{title:"OpenApp Environment",local:"openapp-environment",headingTag:"h1"}}),C=new c({props:{title:"Overview",local:"overview",headingTag:"h2"}}),A=new c({props:{title:"Features",local:"features",headingTag:"h2"}}),k=new c({props:{title:"Directory Structure",local:"directory-structure",headingTag:"h2"}}),x=new u({props:{code:"b3BlbmFwcF9lbnYlMkYlMEElRTIlOTQlOUMlRTIlOTQlODAlRTIlOTQlODAlMjBfX2luaXRfXy5weSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMFBhY2thZ2UlMjBleHBvcnRzJTBBJUUyJTk0JTlDJUUyJTk0JTgwJUUyJTk0JTgwJTIwY2xpZW50LnB5JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwSFRUUCUyMGNsaWVudCUyMGZvciUyMGNvbm5lY3RpbmclMjB0byUyME9wZW5BcHAlMEElRTIlOTQlOUMlRTIlOTQlODAlRTIlOTQlODAlMjBtb2RlbHMucHklMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBEYXRhJTIwbW9kZWxzJTIwZm9yJTIwYWN0aW9ucyUyMGFuZCUyMG9ic2VydmF0aW9ucyUwQSVFMiU5NCU5QyVFMiU5NCU4MCVFMiU5NCU4MCUyMHB5cHJvamVjdC50b21sJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwUGFja2FnZSUyMGRlcGVuZGVuY2llcyUyMGFuZCUyMGNvbmZpZ3VyYXRpb24lMEElRTIlOTQlOUMlRTIlOTQlODAlRTIlOTQlODAlMjBvcGVuZW52LnlhbWwlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBPcGVuRW52JTIwZW52aXJvbm1lbnQlMjBjb25maWd1cmF0aW9uJTBBJUUyJTk0JTlDJUUyJTk0JTgwJUUyJTk0JTgwJTIwdGVzdF9vcGVuYXBwX2Vudi5weSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMFVuaXQlMjB0ZXN0cyUyMGZvciUyMGVudmlyb25tZW50JTIwc3RydWN0dXJlJTBBJUUyJTk0JTlDJUUyJTk0JTgwJUUyJTk0JTgwJTIwUkVBRE1FLm1kJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwVGhpcyUyMGZpbGUlMEElRTIlOTQlOUMlRTIlOTQlODAlRTIlOTQlODAlMjBJTVBMRU1FTlRBVElPTi5tZCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMEltcGxlbWVudGF0aW9uJTIwZGV0YWlscyUyMGFuZCUyMGRlc2lnbiUyMGRlY2lzaW9ucyUwQSVFMiU5NCU5QyVFMiU5NCU4MCVFMiU5NCU4MCUyMGV4YW1wbGVfdXNhZ2UucHklMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBCYXNpYyUyMHVzYWdlJTIwZXhhbXBsZSUyMChsZWdhY3kpJTBBJUUyJTk0JTlDJUUyJTk0JTgwJUUyJTk0JTgwJTIwYXNzZXRzJTJGJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwSW1hZ2VzJTIwYW5kJTIwbWVkaWElMEElRTIlOTQlODIlMjAlMjAlMjAlRTIlOTQlOUMlRTIlOTQlODAlRTIlOTQlODAlMjBPcGVuQXBwc19PcGVuRW52X1JMLnBuZyUyMCUyMCUyMCUyMyUyMEVudmlyb25tZW50JTIwb3ZlcnZpZXclMjBkaWFncmFtJTBBJUUyJTk0JTgyJTIwJTIwJTIwJUUyJTk0JTk0JUUyJTk0JTgwJUUyJTk0JTgwJTIwb3BlbmFwcHMtZGVtby5naWYlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBEZW1vJTIwYW5pbWF0aW9uJTBBJUUyJTk0JTk0JUUyJTk0JTgwJUUyJTk0JTgwJTIwc2VydmVyJTJGJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwU2VydmVyLXNpZGUlMjBlbnZpcm9ubWVudCUyMGltcGxlbWVudGF0aW9uJTBBJTIwJTIwJTIwJTIwJUUyJTk0JTlDJUUyJTk0JTgwJUUyJTk0JTgwJTIwX19pbml0X18ucHklMEElMjAlMjAlMjAlMjAlRTIlOTQlOUMlRTIlOTQlODAlRTIlOTQlODAlMjBhcHAucHklMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBGYXN0QVBJJTIwc2VydmVyJTIwYXBwbGljYXRpb24lMEElMjAlMjAlMjAlMjAlRTIlOTQlOUMlRTIlOTQlODAlRTIlOTQlODAlMjBvcGVuYXBwX2Vudmlyb25tZW50LnB5JTIwJTIwJTIwJTIwJTIzJTIwQ29yZSUyMGVudmlyb25tZW50JTIwbG9naWMlMjAoQnJvd3Nlckd5bSUyMCUyQiUyME9wZW5BcHBzKSUwQSUyMCUyMCUyMCUyMCVFMiU5NCU5QyVFMiU5NCU4MCVFMiU5NCU4MCUyMERvY2tlcmZpbGUlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBEb2NrZXIlMjBpbWFnZSUyMGRlZmluaXRpb24lMEElMjAlMjAlMjAlMjAlRTIlOTQlOTQlRTIlOTQlODAlRTIlOTQlODAlMjBzdGFydC5zaCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMENvbnRhaW5lciUyMHN0YXJ0dXAlMjBzY3JpcHQlMjAocnVucyUyMGJvdGglMjBzZXJ2ZXJzKQ==",highlighted:`openapp_env/ | |
| ├── __init__.py <span class="hljs-comment"># Package exports</span> | |
| ├── client.py <span class="hljs-comment"># HTTP client for connecting to OpenApp</span> | |
| ├── models.py <span class="hljs-comment"># Data models for actions and observations</span> | |
| ├── pyproject.toml <span class="hljs-comment"># Package dependencies and configuration</span> | |
| ├── openenv.yaml <span class="hljs-comment"># OpenEnv environment configuration</span> | |
| ├── test_openapp_env.py <span class="hljs-comment"># Unit tests for environment structure</span> | |
| ├── README.md <span class="hljs-comment"># This file</span> | |
| ├── IMPLEMENTATION.md <span class="hljs-comment"># Implementation details and design decisions</span> | |
| ├── example_usage.py <span class="hljs-comment"># Basic usage example (legacy)</span> | |
| ├── assets/ <span class="hljs-comment"># Images and media</span> | |
| │ ├── OpenApps_OpenEnv_RL.png <span class="hljs-comment"># Environment overview diagram</span> | |
| │ └── openapps-demo.gif <span class="hljs-comment"># Demo animation</span> | |
| └── server/ <span class="hljs-comment"># Server-side environment implementation</span> | |
| ├── __init__.py | |
| ├── app.py <span class="hljs-comment"># FastAPI server application</span> | |
| ├── openapp_environment.py <span class="hljs-comment"># Core environment logic (BrowserGym + OpenApps)</span> | |
| ├── Dockerfile <span class="hljs-comment"># Docker image definition</span> | |
| └── <span class="hljs-literal">start</span>.sh <span class="hljs-comment"># Container startup script (runs both servers)</span>`,lang:"",wrap:!1}}),_=new c({props:{title:"Installation",local:"installation",headingTag:"h2"}}),R=new c({props:{title:"Option 1: Docker Mode (Recommended)",local:"option-1-docker-mode-recommended",headingTag:"h3"}}),V=new u({props:{code:"JTIzJTIwQnVpbGQlMjBmcm9tJTIwdGhlJTIwZW52aXJvbm1lbnQlMjBkaXJlY3RvcnklMEFjZCUyMGVudnMlMkZvcGVuYXBwX2VudiUwQWRvY2tlciUyMGJ1aWxkJTIwLXQlMjBvcGVuYXBwLWVudiUzQWxhdGVzdCUyMC1mJTIwc2VydmVyJTJGRG9ja2VyZmlsZSUyMC4=",highlighted:`<span class="hljs-comment"># Build from the environment directory</span> | |
| <span class="hljs-built_in">cd</span> envs/openapp_env | |
| docker build -t openapp-env:latest -f server/Dockerfile .`,lang:"bash",wrap:!1}}),F=new u({props:{code:"ZXhwb3J0JTIwTk9fUFJPWFklM0Rsb2NhbGhvc3QlMkMxMjcuMC4wLjElMEFjZCUyMGVudnMlMkZvcGVuYXBwX2VudiUwQWRvY2tlciUyMGJ1aWxkJTIwLXQlMjBvcGVuYXBwLWVudiUzQWxhdGVzdCUyMC1mJTIwc2VydmVyJTJGRG9ja2VyZmlsZSUyMC4=",highlighted:`<span class="hljs-built_in">export</span> NO_PROXY=localhost,127.0.0.1 | |
| <span class="hljs-built_in">cd</span> envs/openapp_env | |
| docker build -t openapp-env:latest -f server/Dockerfile .`,lang:"bash",wrap:!1}}),K=new u({props:{code:"JTIzJTIwRm9yJTIwTWV0YSUyRkNvcnBvcmF0ZSUyME5ldHdvcmtzJTIwd2l0aCUyMHByb3h5JTJDJTIwYWxzbyUyMHNldCUyME5PX1BST1hZJTNBJTBBZXhwb3J0JTIwTk9fUFJPWFklM0Rsb2NhbGhvc3QlMkMxMjcuMC4wLjElMEElMEFweXRob24lMjBleGFtcGxlcyUyRm9wZW5hcHBfZXhhbXBsZS5weSUyMC0tbW9kZSUyMGRvY2tlcg==",highlighted:`<span class="hljs-comment"># For Meta/Corporate Networks with proxy, also set NO_PROXY:</span> | |
| <span class="hljs-built_in">export</span> NO_PROXY=localhost,127.0.0.1 | |
| python examples/openapp_example.py --mode docker`,lang:"bash",wrap:!1}}),te=new c({props:{title:"Option 2: Local Mode",local:"option-2-local-mode",headingTag:"h3"}}),pe=new u({props:{code:"Y2QlMjBlbnZzJTJGb3BlbmFwcF9lbnYlMEFwaXAlMjBpbnN0YWxsJTIwLWUlMjAu",highlighted:`<span class="hljs-built_in">cd</span> envs/openapp_env | |
| pip install -e .`,lang:"bash",wrap:!1}}),re=new u({props:{code:"cGxheXdyaWdodCUyMGluc3RhbGwlMjBjaHJvbWl1bQ==",highlighted:"playwright install chromium",lang:"bash",wrap:!1}}),me=new u({props:{code:"JTIzJTIwQ2xvbmUlMjBPcGVuQXBwcyUyMHJlcG9zaXRvcnklMEFnaXQlMjBjbG9uZSUyMGh0dHBzJTNBJTJGJTJGZ2l0aHViLmNvbSUyRmZhY2Vib29rcmVzZWFyY2glMkZPcGVuQXBwcy5naXQlMEFjZCUyME9wZW5BcHBzJTBBJTBBJTIzJTIwSW5zdGFsbCUyMGRlcGVuZGVuY2llcyUwQXV2JTIwc3luYyUyMCUyMCUyMyUyMG9yJTNBJTIwcGlwJTIwaW5zdGFsbCUyMC1lJTIwLg==",highlighted:`<span class="hljs-comment"># Clone OpenApps repository</span> | |
| git <span class="hljs-built_in">clone</span> https://github.com/facebookresearch/OpenApps.git | |
| <span class="hljs-built_in">cd</span> OpenApps | |
| <span class="hljs-comment"># Install dependencies</span> | |
| uv <span class="hljs-built_in">sync</span> <span class="hljs-comment"># or: pip install -e .</span>`,lang:"bash",wrap:!1}}),ue=new c({props:{title:"Quick Start",local:"quick-start",headingTag:"h2"}}),Je=new c({props:{title:"Running with Docker (Recommended)",local:"running-with-docker-recommended",headingTag:"h3"}}),de=new u({props:{code:"JTIzJTIwRm9yJTIwTWV0YSUyRkNvcnBvcmF0ZSUyMG5ldHdvcmtzJTIwd2l0aCUyMHByb3h5JTJDJTIwc2V0JTIwTk9fUFJPWFklMjBmaXJzdCUzQSUwQWV4cG9ydCUyME5PX1BST1hZJTNEbG9jYWxob3N0JTJDMTI3LjAuMC4xJTBBJTBBJTIzJTIwUnVuJTIwdGhlJTIwZXhhbXBsZSUwQXB5dGhvbiUyMGV4YW1wbGVzJTJGb3BlbmFwcF9leGFtcGxlLnB5JTIwLS1tb2RlJTIwZG9ja2Vy",highlighted:`<span class="hljs-comment"># For Meta/Corporate networks with proxy, set NO_PROXY first:</span> | |
| <span class="hljs-built_in">export</span> NO_PROXY=localhost,127.0.0.1 | |
| <span class="hljs-comment"># Run the example</span> | |
| python examples/openapp_example.py --mode docker`,lang:"bash",wrap:!1}}),Ce=new u({props:{code:"JTIzJTIwTGF1bmNoZXMlMjBPcGVuQXBwcyUyMHNlcnZlciUyMGluJTIwYmFja2dyb3VuZCUwQWNkJTIwJTJGYXBwJTJGb3BlbmFwcHMlMEFweXRob24lMjBsYXVuY2gucHklMjAlMjYlMEElMEElMjMlMjBXYWl0cyUyMGZvciUyMHBvcnQlMjA1MDAxJTIwdG8lMjBiZSUyMHJlYWR5JTBBJTIzJTIwVGhlbiUyMHN0YXJ0cyUyMEZhc3RBUEklMjBzZXJ2ZXIlMEF1dmljb3JuJTIwb3BlbmFwcF9lbnYuc2VydmVyLmFwcCUzQWFwcCUyMC0taG9zdCUyMDAuMC4wLjAlMjAtLXBvcnQlMjA4MDAw",highlighted:`<span class="hljs-comment"># Launches OpenApps server in background</span> | |
| <span class="hljs-built_in">cd</span> /app/openapps | |
| python launch.py & | |
| <span class="hljs-comment"># Waits for port 5001 to be ready</span> | |
| <span class="hljs-comment"># Then starts FastAPI server</span> | |
| uvicorn openapp_env.server.app:app --host 0.0.0.0 --port 8000`,lang:"bash",wrap:!1}}),$e=new u({props:{code:"Y2xpZW50JTIwJTNEJTIwT3BlbkFwcEVudi5mcm9tX2RvY2tlcl9pbWFnZSglMjJvcGVuYXBwLWVudiUzQWxhdGVzdCUyMiklMEElMjMlMjBDbGllbnQlMjAtJTNFJTIwRmFzdEFQSSUyMChwb3J0JTIwODAwMCklMjAtJTNFJTIwT3BlbkFwcHMlMjAocG9ydCUyMDUwMDEp",highlighted:`client = OpenAppEnv.from_docker_image(<span class="hljs-string">"openapp-env:latest"</span>) | |
| <span class="hljs-comment"># Client -> FastAPI (port 8000) -> OpenApps (port 5001)</span>`,lang:"python",wrap:!1}}),Be=new c({props:{title:"Running Locally",local:"running-locally",headingTag:"h3"}}),ke=new u({props:{code:"Z2l0JTIwY2xvbmUlMjBodHRwcyUzQSUyRiUyRmdpdGh1Yi5jb20lMkZmYWNlYm9va3Jlc2VhcmNoJTJGT3BlbkFwcHMuZ2l0JTBBY2QlMjBPcGVuQXBwcyUwQXV2JTIwc3luYw==",highlighted:`git <span class="hljs-built_in">clone</span> https://github.com/facebookresearch/OpenApps.git | |
| <span class="hljs-built_in">cd</span> OpenApps | |
| uv <span class="hljs-built_in">sync</span>`,lang:"bash",wrap:!1}}),Ee=new u({props:{code:"Y2QlMjBPcGVuQXBwcyUyMCUyMCUyMyUyMG9yJTIwd2hlcmV2ZXIlMjB5b3UlMjBjbG9uZWQlMjBpdCUwQXV2JTIwcnVuJTIwbGF1bmNoLnB5JTBBJTBBJTIzJTIwb3IlMjBpbnN0ZWFkJTIwb2YlMjB0aGUlMjB1diUyMHJ1biUyMHlvdSUyMGNhbiUyMHVzZSUyMHRoZSUyMFB5dGhvbiUyMGNvbW1hbmQlM0ElMEFweXRob24lMjBPcGVuQXBwcyUyRmxhdW5jaC5weQ==",highlighted:`<span class="hljs-built_in">cd</span> OpenApps <span class="hljs-comment"># or wherever you cloned it</span> | |
| uv run launch.py | |
| <span class="hljs-comment"># or instead of the uv run you can use the Python command:</span> | |
| python OpenApps/launch.py`,lang:"bash",wrap:!1}}),He=new u({props:{code:"Y2QlMjBPcGVuQXBwcyUwQXB5dGhvbiUyME9wZW5BcHBzJTJGbGF1bmNoLnB5JTIwYnJvd3Nlcmd5bV9lbnZfYXJncy5oZWFkbGVzcyUzREZhbHNl",highlighted:`<span class="hljs-built_in">cd</span> OpenApps | |
| python OpenApps/launch.py browsergym_env_args.headless=False`,lang:"bash",wrap:!1}}),Le=new u({props:{code:"ZXhwb3J0JTIwT1BFTkFQUFNfVVJMJTNEaHR0cCUzQSUyRiUyRmxvY2FsaG9zdCUzQTUwMDElMEFweXRob24lMjBleGFtcGxlcyUyRm9wZW5hcHBfZXhhbXBsZS5weSUyMC0tbW9kZSUyMGxvY2Fs",highlighted:`<span class="hljs-built_in">export</span> OPENAPPS_URL=http://localhost:5001 | |
| python examples/openapp_example.py --mode <span class="hljs-built_in">local</span>`,lang:"bash",wrap:!1}}),Ve=new c({props:{title:"Example Script",local:"example-script",headingTag:"h3"}}),Xe=new u({props:{code:"JTIzJTIwUnVuJTIwd2l0aCUyMERvY2tlciUyMChyZWNvbW1lbmRlZCklMEFweXRob24lMjBleGFtcGxlcyUyRm9wZW5hcHBfZXhhbXBsZS5weSUyMC0tbW9kZSUyMGRvY2tlciUwQSUwQSUyMyUyMFJ1biUyMGxvY2FsbHklMjAocmVxdWlyZXMlMjBPcGVuQXBwcyUyMHNlcnZlciUyMHJ1bm5pbmcpJTBBZXhwb3J0JTIwT1BFTkFQUFNfVVJMJTNEaHR0cCUzQSUyRiUyRmxvY2FsaG9zdCUzQTUwMDElMEFweXRob24lMjBleGFtcGxlcyUyRm9wZW5hcHBfZXhhbXBsZS5weSUyMC0tbW9kZSUyMGxvY2FsJTBBJTBBJTIzJTIwU2hvdyUyMGJyb3dzZXIlMjB3aW5kb3clMjB0byUyMHZpc3VhbGl6ZSUyMGFnZW50JTIwYWN0aW9ucyUwQXB5dGhvbiUyMGV4YW1wbGVzJTJGb3BlbmFwcF9leGFtcGxlLnB5JTIwLS1tb2RlJTIwbG9jYWwlMjAtLXNob3ctYnJvd3NlciUwQSUwQSUyMyUyMFJ1biUyMHdpdGglMjBjdXN0b20lMjBudW1iZXIlMjBvZiUyMHN0ZXBzJTBBcHl0aG9uJTIwZXhhbXBsZXMlMkZvcGVuYXBwX2V4YW1wbGUucHklMjAtLW1vZGUlMjBkb2NrZXIlMjAtLW51bS1zdGVwcyUyMDIwJTBBJTBBJTIzJTIwU2VlJTIwYWxsJTIwb3B0aW9ucyUwQXB5dGhvbiUyMGV4YW1wbGVzJTJGb3BlbmFwcF9leGFtcGxlLnB5JTIwLS1oZWxw",highlighted:`<span class="hljs-comment"># Run with Docker (recommended)</span> | |
| python examples/openapp_example.py --mode docker | |
| <span class="hljs-comment"># Run locally (requires OpenApps server running)</span> | |
| <span class="hljs-built_in">export</span> OPENAPPS_URL=http://localhost:5001 | |
| python examples/openapp_example.py --mode <span class="hljs-built_in">local</span> | |
| <span class="hljs-comment"># Show browser window to visualize agent actions</span> | |
| python examples/openapp_example.py --mode <span class="hljs-built_in">local</span> --show-browser | |
| <span class="hljs-comment"># Run with custom number of steps</span> | |
| python examples/openapp_example.py --mode docker --num-steps 20 | |
| <span class="hljs-comment"># See all options</span> | |
| python examples/openapp_example.py --<span class="hljs-built_in">help</span>`,lang:"bash",wrap:!1}}),Fe=new c({props:{title:"Visualizing Agent Interactions",local:"visualizing-agent-interactions",headingTag:"h3"}}),Oe=new u({props:{code:"JTIzJTIwVGVybWluYWwlMjAxJTNBJTIwU3RhcnQlMjBPcGVuQXBwcyUyMHNlcnZlciUyMHdpdGglMjB2aXNpYmxlJTIwYnJvd3NlciUwQWNkJTIwT3BlbkFwcHMlMEFweXRob24lMjBPcGVuQXBwcyUyRmxhdW5jaC5weSUyMGJyb3dzZXJneW1fZW52X2FyZ3MuaGVhZGxlc3MlM0RGYWxzZSUwQSUwQSUyMyUyMFRlcm1pbmFsJTIwMiUzQSUyMFJ1biUyMHlvdXIlMjBhZ2VudCUyMGNvZGUlMEFleHBvcnQlMjBPUEVOQVBQU19VUkwlM0RodHRwJTNBJTJGJTJGbG9jYWxob3N0JTNBNTAwMSUwQXB5dGhvbiUyMGV4YW1wbGVzJTJGb3BlbmFwcF9leGFtcGxlLnB5JTIwLS1tb2RlJTIwbG9jYWw=",highlighted:`<span class="hljs-comment"># Terminal 1: Start OpenApps server with visible browser</span> | |
| <span class="hljs-built_in">cd</span> OpenApps | |
| python OpenApps/launch.py browsergym_env_args.headless=False | |
| <span class="hljs-comment"># Terminal 2: Run your agent code</span> | |
| <span class="hljs-built_in">export</span> OPENAPPS_URL=http://localhost:5001 | |
| python examples/openapp_example.py --mode <span class="hljs-built_in">local</span>`,lang:"bash",wrap:!1}}),tt=new u({props:{code:"JTIzJTIwU3RhcnQlMjBhJTIwY29udGFpbmVyJTIwYW5kJTIwa2VlcCUyMGl0JTIwcnVubmluZyUwQWRvY2tlciUyMHJ1biUyMC1kJTIwLXAlMjA4MDAwJTNBODAwMCUyMG9wZW5hcHAtZW52JTNBbGF0ZXN0JTBBJTBBJTIzJTIwQWNjZXNzJTIwdGhlJTIwd2ViJTIwaW50ZXJmYWNlJTBBJTIzJTIwLSUyMEludGVyYWN0aXZlJTIwVUklM0ElMjBodHRwJTNBJTJGJTJGbG9jYWxob3N0JTNBODAwMCUyRndlYiUwQSUyMyUyMC0lMjBBUEklMjBkb2NzJTNBJTIwaHR0cCUzQSUyRiUyRmxvY2FsaG9zdCUzQTgwMDAlMkZkb2NzJTBBJTIzJTIwLSUyME9wZW5BcHBzJTIwKGludGVybmFsKSUzQSUyMGh0dHAlM0ElMkYlMkZsb2NhbGhvc3QlM0E1MDAxJTIwKGluc2lkZSUyMGNvbnRhaW5lcik=",highlighted:`<span class="hljs-comment"># Start a container and keep it running</span> | |
| docker run -d -p 8000:8000 openapp-env:latest | |
| <span class="hljs-comment"># Access the web interface</span> | |
| <span class="hljs-comment"># - Interactive UI: http://localhost:8000/web</span> | |
| <span class="hljs-comment"># - API docs: http://localhost:8000/docs</span> | |
| <span class="hljs-comment"># - OpenApps (internal): http://localhost:5001 (inside container)</span>`,lang:"bash",wrap:!1}}),nt=new c({props:{title:"Basic Usage",local:"basic-usage",headingTag:"h3"}}),st=new u({props:{code:"ZnJvbSUyMGVudnMub3BlbmFwcF9lbnYlMjBpbXBvcnQlMjBPcGVuQXBwQWN0aW9uJTJDJTIwT3BlbkFwcEVudiUwQSUwQSUyMyUyMENyZWF0ZSUyMGVudmlyb25tZW50JTIwZnJvbSUyMERvY2tlciUyMGltYWdlJTBBY2xpZW50JTIwJTNEJTIwT3BlbkFwcEVudi5mcm9tX2RvY2tlcl9pbWFnZSglMjJvcGVuYXBwLWVudiUzQWxhdGVzdCUyMiklMEElMEElMjMlMjBSZXNldCUyMHRvJTIwaW5pdGlhbCUyMHN0YXRlJTBBcmVzdWx0JTIwJTNEJTIwY2xpZW50LnJlc2V0KCklMEFwcmludChmJTIyU3RhcnRpbmclMjBVUkwlM0ElMjAlN0JyZXN1bHQub2JzZXJ2YXRpb24udXJsJTdEJTIyKSUwQSUwQSUyMyUyME5hdmlnYXRlJTIwdG8lMjBjYWxlbmRhciUyMGFwcCUwQXJlc3VsdCUyMCUzRCUyMGNsaWVudC5zdGVwKE9wZW5BcHBBY3Rpb24oJTBBJTIwJTIwJTIwJTIwYWN0aW9uX3R5cGUlM0QlMjJnb3RvJTIyJTJDJTBBJTIwJTIwJTIwJTIwdXJsJTNEJTIyaHR0cCUzQSUyRiUyRmxvY2FsaG9zdCUzQTUwMDElMkZjYWxlbmRhciUyMiUwQSkpJTBBJTBBJTIzJTIwQ2xpY2slMjBvbiUyMGElMjBidXR0b24lMjAoZXhhbXBsZSUyMGJpZCklMEFyZXN1bHQlMjAlM0QlMjBjbGllbnQuc3RlcChPcGVuQXBwQWN0aW9uKCUwQSUyMCUyMCUyMCUyMGFjdGlvbl90eXBlJTNEJTIyY2xpY2slMjIlMkMlMEElMjAlMjAlMjAlMjBiaWQlM0QlMjJhZGQtZXZlbnQtYnRuJTIyJTBBKSklMEElMEElMjMlMjBGaWxsJTIwaW4lMjBhJTIwZm9ybSUyMGZpZWxkJTBBcmVzdWx0JTIwJTNEJTIwY2xpZW50LnN0ZXAoT3BlbkFwcEFjdGlvbiglMEElMjAlMjAlMjAlMjBhY3Rpb25fdHlwZSUzRCUyMmZpbGwlMjIlMkMlMEElMjAlMjAlMjAlMjBiaWQlM0QlMjJldmVudC10aXRsZS1pbnB1dCUyMiUyQyUwQSUyMCUyMCUyMCUyMHRleHQlM0QlMjJUZWFtJTIwTWVldGluZyUyMiUwQSkpJTBBJTBBcHJpbnQoZiUyMlJld2FyZCUzQSUyMCU3QnJlc3VsdC5yZXdhcmQlN0QlMjIpJTBBcHJpbnQoZiUyMkRvbmUlM0ElMjAlN0JyZXN1bHQuZG9uZSU3RCUyMiklMEElMEElMjMlMjBDbGVhbnVwJTBBY2xpZW50LmNsb3NlKCk=",highlighted:`<span class="hljs-keyword">from</span> envs.openapp_env <span class="hljs-keyword">import</span> OpenAppAction, OpenAppEnv | |
| <span class="hljs-comment"># Create environment from Docker image</span> | |
| client = OpenAppEnv.from_docker_image(<span class="hljs-string">"openapp-env:latest"</span>) | |
| <span class="hljs-comment"># Reset to initial state</span> | |
| result = client.reset() | |
| <span class="hljs-built_in">print</span>(<span class="hljs-string">f"Starting URL: <span class="hljs-subst">{result.observation.url}</span>"</span>) | |
| <span class="hljs-comment"># Navigate to calendar app</span> | |
| result = client.step(OpenAppAction( | |
| action_type=<span class="hljs-string">"goto"</span>, | |
| url=<span class="hljs-string">"http://localhost:5001/calendar"</span> | |
| )) | |
| <span class="hljs-comment"># Click on a button (example bid)</span> | |
| result = client.step(OpenAppAction( | |
| action_type=<span class="hljs-string">"click"</span>, | |
| bid=<span class="hljs-string">"add-event-btn"</span> | |
| )) | |
| <span class="hljs-comment"># Fill in a form field</span> | |
| result = client.step(OpenAppAction( | |
| action_type=<span class="hljs-string">"fill"</span>, | |
| bid=<span class="hljs-string">"event-title-input"</span>, | |
| text=<span class="hljs-string">"Team Meeting"</span> | |
| )) | |
| <span class="hljs-built_in">print</span>(<span class="hljs-string">f"Reward: <span class="hljs-subst">{result.reward}</span>"</span>) | |
| <span class="hljs-built_in">print</span>(<span class="hljs-string">f"Done: <span class="hljs-subst">{result.done}</span>"</span>) | |
| <span class="hljs-comment"># Cleanup</span> | |
| client.close()`,lang:"python",wrap:!1}}),it=new c({props:{title:"Action Types",local:"action-types",headingTag:"h3"}}),ot=new c({props:{title:"Observations",local:"observations",headingTag:"h3"}}),mt=new c({props:{title:"Configuration",local:"configuration",headingTag:"h2"}}),wt=new c({props:{title:"Environment Parameters",local:"environment-parameters",headingTag:"h3"}}),Tt=new u({props:{code:"ZnJvbSUyMGVudnMub3BlbmFwcF9lbnYuc2VydmVyLm9wZW5hcHBfZW52aXJvbm1lbnQlMjBpbXBvcnQlMjBPcGVuQXBwRW52aXJvbm1lbnQlMEElMEFlbnYlMjAlM0QlMjBPcGVuQXBwRW52aXJvbm1lbnQoJTBBJTIwJTIwJTIwJTIwd2ViX2FwcF9wb3J0JTNENTAwMSUyQyUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMFBvcnQlMjBmb3IlMjBPcGVuQXBwcyUyMHNlcnZlciUwQSUyMCUyMCUyMCUyMGhlYWRsZXNzJTNEVHJ1ZSUyQyUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMFJ1biUyMGJyb3dzZXIlMjBpbiUyMGhlYWRsZXNzJTIwbW9kZSUwQSUyMCUyMCUyMCUyMHRhc2tfbmFtZSUzRCUyMmFkZF9tZWV0aW5nJTIyJTJDJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwT3B0aW9uYWwlMjB0YXNrJTIwbmFtZSUwQSUyMCUyMCUyMCUyMGFwcHNfY29uZmlnJTNEJTdCJTdEJTJDJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwQXBwLXNwZWNpZmljJTIwY29uZmlndXJhdGlvbiUwQSUyMCUyMCUyMCUyMG1heF9zdGVwcyUzRDUwJTJDJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwTWF4aW11bSUyMHN0ZXBzJTIwcGVyJTIwZXBpc29kZSUwQSk=",highlighted:`<span class="hljs-keyword">from</span> envs.openapp_env.server.openapp_environment <span class="hljs-keyword">import</span> OpenAppEnvironment | |
| env = OpenAppEnvironment( | |
| web_app_port=<span class="hljs-number">5001</span>, <span class="hljs-comment"># Port for OpenApps server</span> | |
| headless=<span class="hljs-literal">True</span>, <span class="hljs-comment"># Run browser in headless mode</span> | |
| task_name=<span class="hljs-string">"add_meeting"</span>, <span class="hljs-comment"># Optional task name</span> | |
| apps_config={}, <span class="hljs-comment"># App-specific configuration</span> | |
| max_steps=<span class="hljs-number">50</span>, <span class="hljs-comment"># Maximum steps per episode</span> | |
| )`,lang:"python",wrap:!1}}),ct=new c({props:{title:"Tasks and Rewards",local:"tasks-and-rewards",headingTag:"h2"}}),dt=new c({props:{title:"Example: Task-Based Training",local:"example-task-based-training",headingTag:"h2"}}),ht=new u({props:{code:"ZnJvbSUyMGVudnMub3BlbmFwcF9lbnYlMjBpbXBvcnQlMjBPcGVuQXBwQWN0aW9uJTJDJTIwT3BlbkFwcEVudiUwQSUwQSUyMyUyMENyZWF0ZSUyMGVudmlyb25tZW50JTIwd2l0aCUyMGElMjBzcGVjaWZpYyUyMHRhc2slMEFjbGllbnQlMjAlM0QlMjBPcGVuQXBwRW52LmZyb21fZG9ja2VyX2ltYWdlKCUyMm9wZW5hcHAtZW52JTNBbGF0ZXN0JTIyKSUwQSUwQSUyMyUyMFRoZSUyMHRhc2slMjB3aWxsJTIwZ3VpZGUlMjB0aGUlMjBhZ2VudCUyMHRvd2FyZCUyMGElMjBzcGVjaWZpYyUyMGdvYWwlMEElMjMlMjBSZXdhcmRzJTIwd2lsbCUyMGJlJTIwYmFzZWQlMjBvbiUyMHByb2dyZXNzJTIwdG93YXJkJTIwY29tcGxldGluZyUyMHRoZSUyMHRhc2slMEFyZXN1bHQlMjAlM0QlMjBjbGllbnQucmVzZXQoKSUwQSUwQSUyMyUyMEFnZW50JTIwaW50ZXJhY3RzJTIwdG8lMjBjb21wbGV0ZSUyMHRoZSUyMHRhc2slMEElMjMlMjAuLi4lMjBhZ2VudCUyMGxvZ2ljJTIwaGVyZSUyMC4uLiUwQSUwQWNsaWVudC5jbG9zZSgp",highlighted:`<span class="hljs-keyword">from</span> envs.openapp_env <span class="hljs-keyword">import</span> OpenAppAction, OpenAppEnv | |
| <span class="hljs-comment"># Create environment with a specific task</span> | |
| client = OpenAppEnv.from_docker_image(<span class="hljs-string">"openapp-env:latest"</span>) | |
| <span class="hljs-comment"># The task will guide the agent toward a specific goal</span> | |
| <span class="hljs-comment"># Rewards will be based on progress toward completing the task</span> | |
| result = client.reset() | |
| <span class="hljs-comment"># Agent interacts to complete the task</span> | |
| <span class="hljs-comment"># ... agent logic here ...</span> | |
| client.close()`,lang:"python",wrap:!1}}),bt=new c({props:{title:"Development",local:"development",headingTag:"h2"}}),ft=new c({props:{title:"Running Server Locally (without Docker)",local:"running-server-locally-without-docker",headingTag:"h3"}}),vt=new u({props:{code:"Y2QlMjBlbnZzJTJGb3BlbmFwcF9lbnYlMEF1diUyMHJ1biUyMHNlcnZlcg==",highlighted:`<span class="hljs-built_in">cd</span> envs/openapp_env | |
| uv run server`,lang:"bash",wrap:!1}}),It=new c({props:{title:"Testing",local:"testing",headingTag:"h3"}}),Ct=new u({props:{code:"ZnJvbSUyMG9wZW5hcHBfZW52LnNlcnZlci5vcGVuYXBwX2Vudmlyb25tZW50JTIwaW1wb3J0JTIwT3BlbkFwcEVudmlyb25tZW50JTBBZnJvbSUyMG9wZW5hcHBfZW52Lm1vZGVscyUyMGltcG9ydCUyME9wZW5BcHBBY3Rpb24lMEElMEFkZWYlMjB0ZXN0X2Vudmlyb25tZW50KCklM0ElMEElMjAlMjAlMjAlMjBlbnYlMjAlM0QlMjBPcGVuQXBwRW52aXJvbm1lbnQoKSUwQSUwQSUyMCUyMCUyMCUyMCUyMyUyMFRlc3QlMjByZXNldCUwQSUyMCUyMCUyMCUyMG9icyUyMCUzRCUyMGVudi5yZXNldCgpJTBBJTIwJTIwJTIwJTIwYXNzZXJ0JTIwb2JzLnVybCUyMCElM0QlMjAlMjIlMjIlMEElMEElMjAlMjAlMjAlMjAlMjMlMjBUZXN0JTIwc3RlcCUwQSUyMCUyMCUyMCUyMGFjdGlvbiUyMCUzRCUyME9wZW5BcHBBY3Rpb24oYWN0aW9uX3R5cGUlM0QlMjJub29wJTIyKSUwQSUyMCUyMCUyMCUyMG9icyUyMCUzRCUyMGVudi5zdGVwKGFjdGlvbiklMEElMjAlMjAlMjAlMjBhc3NlcnQlMjBlbnYuc3RhdGUuc3RlcF9jb3VudCUyMCUzRCUzRCUyMDElMEElMEElMjAlMjAlMjAlMjAlMjMlMjBDbGVhbnVwJTBBJTIwJTIwJTIwJTIwZW52LmNsb3NlKCklMEElMEF0ZXN0X2Vudmlyb25tZW50KCk=",highlighted:`<span class="hljs-keyword">from</span> openapp_env.server.openapp_environment <span class="hljs-keyword">import</span> OpenAppEnvironment | |
| <span class="hljs-keyword">from</span> openapp_env.models <span class="hljs-keyword">import</span> OpenAppAction | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">test_environment</span>(): | |
| env = OpenAppEnvironment() | |
| <span class="hljs-comment"># Test reset</span> | |
| obs = env.reset() | |
| <span class="hljs-keyword">assert</span> obs.url != <span class="hljs-string">""</span> | |
| <span class="hljs-comment"># Test step</span> | |
| action = OpenAppAction(action_type=<span class="hljs-string">"noop"</span>) | |
| obs = env.step(action) | |
| <span class="hljs-keyword">assert</span> env.state.step_count == <span class="hljs-number">1</span> | |
| <span class="hljs-comment"># Cleanup</span> | |
| env.close() | |
| test_environment()`,lang:"python",wrap:!1}}),gt=new c({props:{title:"Attribution",local:"attribution",headingTag:"h2"}}),At=new c({props:{title:"Troubleshooting",local:"troubleshooting",headingTag:"h2"}}),Gt=new c({props:{title:"Docker Build Issues",local:"docker-build-issues",headingTag:"h3"}}),Zt=new u({props:{code:"ZXhwb3J0JTIwTk9fUFJPWFklM0Rsb2NhbGhvc3QlMkMxMjcuMC4wLjElMEFkb2NrZXIlMjBidWlsZCUyMC10JTIwb3BlbmFwcC1lbnYlM0FsYXRlc3QlMjAtZiUyMGVudnMlMkZvcGVuYXBwX2VudiUyRnNlcnZlciUyRkRvY2tlcmZpbGUlMjAu",highlighted:`<span class="hljs-built_in">export</span> NO_PROXY=localhost,127.0.0.1 | |
| docker build -t openapp-env:latest -f envs/openapp_env/server/Dockerfile .`,lang:"bash",wrap:!1}}),Wt=new u({props:{code:"ZG9ja2VyJTIwbG9ncyUyMCUzQ2NvbnRhaW5lci1pZCUzRQ==",highlighted:"docker logs <container-id>",lang:"bash",wrap:!1}}),Vt=new c({props:{title:"Local Mode Issues",local:"local-mode-issues",headingTag:"h3"}}),St=new u({props:{code:"ZXhwb3J0JTIwT1BFTkFQUFNfVVJMJTNEaHR0cCUzQSUyRiUyRmxvY2FsaG9zdCUzQTUwMDElMEFweXRob24lMjBleGFtcGxlcyUyRm9wZW5hcHBfZXhhbXBsZS5weSUyMC0tbW9kZSUyMGxvY2Fs",highlighted:`<span class="hljs-built_in">export</span> OPENAPPS_URL=http://localhost:5001 | |
| python examples/openapp_example.py --mode <span class="hljs-built_in">local</span>`,lang:"bash",wrap:!1}}),Ot=new u({props:{code:"Y2QlMjBPcGVuQXBwcyUwQXV2JTIwcnVuJTIwbGF1bmNoLnB5",highlighted:`<span class="hljs-built_in">cd</span> OpenApps | |
| uv run launch.py`,lang:"bash",wrap:!1}}),Dt=new u({props:{code:"JTIzJTIwU3RhcnQlMjBzZXJ2ZXIlMjB3aXRoJTIwdmlzaWJsZSUyMGJyb3dzZXIlMEFjZCUyME9wZW5BcHBzJTBBcHl0aG9uJTIwbGF1bmNoLnB5JTIwYnJvd3Nlcmd5bV9lbnZfYXJncy5oZWFkbGVzcyUzREZhbHNl",highlighted:`<span class="hljs-comment"># Start server with visible browser</span> | |
| <span class="hljs-built_in">cd</span> OpenApps | |
| python launch.py browsergym_env_args.headless=False`,lang:"bash",wrap:!1}}),qt=new c({props:{title:"Performance Issues",local:"performance-issues",headingTag:"h3"}}),pl=new c({props:{title:"License",local:"license",headingTag:"h2"}}),ol=new c({props:{title:"Citation",local:"citation",headingTag:"h2"}}),Ml=new u({props:{code:"JTQwYXJ0aWNsZSU3QnVsbHJpY2gyMDI1b3BlbmFwcHMwJTJDJTBBJTIwJTIwdGl0bGUlMjAlMjAlMjAlM0QlMjAlN0JPcGVuQXBwcyUzQSUyMFNpbXVsYXRpbmclMjBFbnZpcm9ubWVudCUyMFZhcmlhdGlvbnMlMjB0byUyME1lYXN1cmUlMjBVSS1BZ2VudCUyMFJlbGlhYmlsaXR5JTdEJTJDJTBBJTIwJTIwYXV0aG9yJTIwJTIwJTNEJTIwJTdCS2FyZW4lMjBVbGxyaWNoJTIwYW5kJTIwSmluZ3RvbmclMjBTdSUyMGFuZCUyMENsYXVkaWElMjBTaGklMjBhbmQlMjBBcmp1biUyMFN1YnJhbW9uaWFuJTIwYW5kJTIwQW1pciUyMEJhciUyMGFuZCUyMEl2YW4lMjBFdnRpbW92JTIwYW5kJTIwTmlrb2xhb3MlMjBUc2lsaXZpcyUyMGFuZCUyMFJhbmRhbGwlMjBCYWxlc3RyaWVybyUyMGFuZCUyMEp1bGlhJTIwS2VtcGUlMjBhbmQlMjBNYXJrJTIwSWJyYWhpbSU3RCUyQyUwQSUyMCUyMHllYXIlMjAlMjAlMjAlMjAlM0QlMjAlN0IyMDI1JTdEJTJDJTBBJTIwJTIwam91cm5hbCUyMCUzRCUyMCU3QmFyWGl2JTIwcHJlcHJpbnQlMjBhclhpdiUzQSUyMDI1MTEuMjA3NjYlN0QlMEElN0Q=",highlighted:`@article{ullrich2025openapps0, | |
| title = {OpenApps: Simulating Environment Variations to Measure UI-Agent Reliability}, | |
| author = {Karen Ullrich <span class="hljs-keyword">and </span><span class="hljs-keyword">Jingtong </span>Su <span class="hljs-keyword">and </span>Claudia <span class="hljs-keyword">Shi </span><span class="hljs-keyword">and </span>Arjun <span class="hljs-keyword">Subramonian </span><span class="hljs-keyword">and </span>Amir <span class="hljs-keyword">Bar </span><span class="hljs-keyword">and </span>Ivan Evtimov <span class="hljs-keyword">and </span>Nikolaos Tsilivis <span class="hljs-keyword">and </span>Randall <span class="hljs-keyword">Balestriero </span><span class="hljs-keyword">and </span><span class="hljs-keyword">Julia </span>Kempe <span class="hljs-keyword">and </span>Mark Ibrahim}, | |
| year = {<span class="hljs-number">2025</span>}, | |
| <span class="hljs-keyword">journal </span>= {arXiv preprint arXiv: <span class="hljs-number">2511</span>.<span class="hljs-number">20766</span>} | |
| }`,lang:"bibtex",wrap:!1}}),ml=new ya({props:{source:"https://github.com/huggingface/openenv/blob/main/docs/source/environments/openapp.md"}}),{c(){h=p("meta"),bl=s(),Ul=p("p"),fl=s(),U=p("div"),r(v.$$.fragment),wi=s(),r(j.$$.fragment),Ti=s(),I=p("div"),I.innerHTML=hi,yi=s(),wl=p("p"),wl.innerHTML=bi,vl=s(),r(C.$$.fragment),jl=s(),g=p("p"),g.textContent=fi,Il=s(),b=p("div"),b.innerHTML=vi,Cl=s(),$=p("p"),$.textContent=ji,gl=s(),B=p("ul"),B.innerHTML=Ii,$l=s(),r(A.$$.fragment),Bl=s(),G=p("ul"),G.innerHTML=Ci,Al=s(),r(k.$$.fragment),Gl=s(),r(x.$$.fragment),kl=s(),Z=p("p"),Z.innerHTML=gi,xl=s(),E=p("ul"),E.innerHTML=$i,Zl=s(),r(_.$$.fragment),El=s(),H=p("p"),H.innerHTML=Bi,_l=s(),r(R.$$.fragment),Hl=s(),W=p("p"),W.textContent=Ai,Rl=s(),L=p("p"),L.innerHTML=Gi,Wl=s(),Q=p("p"),Q.textContent=ki,Ll=s(),r(V.$$.fragment),Ql=s(),X=p("p"),X.innerHTML=xi,Vl=s(),r(F.$$.fragment),Xl=s(),S=p("p"),S.innerHTML=Zi,Fl=s(),N=p("ul"),N.innerHTML=Ei,Sl=s(),Y=p("p"),Y.innerHTML=_i,Nl=s(),O=p("ol"),O.innerHTML=Hi,Yl=s(),P=p("p"),P.textContent=Ri,Ol=s(),z=p("p"),z.innerHTML=Wi,Pl=s(),D=p("ul"),D.innerHTML=Li,zl=s(),q=p("p"),q.innerHTML=Qi,Dl=s(),r(K.$$.fragment),ql=s(),ee=p("p"),ee.innerHTML=Vi,Kl=s(),r(te.$$.fragment),en=s(),le=p("p"),le.textContent=Xi,tn=s(),ne=p("p"),ne.innerHTML=Fi,ln=s(),se=p("ul"),se.innerHTML=Si,nn=s(),ie=p("p"),ie.innerHTML=Ni,sn=s(),r(pe.$$.fragment),pn=s(),ae=p("p"),ae.textContent=Yi,an=s(),oe=p("p"),oe.innerHTML=Oi,on=s(),r(re.$$.fragment),rn=s(),Me=p("p"),Me.innerHTML=Pi,Mn=s(),r(me.$$.fragment),mn=s(),we=p("p"),we.innerHTML=zi,wn=s(),Te=p("p"),Te.textContent=Di,Tn=s(),ye=p("ul"),ye.innerHTML=qi,yn=s(),ce=p("p"),ce.textContent=Ki,cn=s(),r(ue.$$.fragment),un=s(),r(Je.$$.fragment),Jn=s(),Ue=p("p"),Ue.textContent=ep,Un=s(),r(de.$$.fragment),dn=s(),he=p("p"),he.textContent=tp,hn=s(),be=p("ul"),be.innerHTML=lp,bn=s(),fe=p("p"),fe.textContent=np,fn=s(),ve=p("p"),ve.innerHTML=sp,vn=s(),je=p("p"),je.innerHTML=ip,jn=s(),d=p("ol"),Ie=p("li"),Tl=p("p"),Tl.innerHTML=pp,ci=s(),r(Ce.$$.fragment),ui=s(),ge=p("li"),yl=p("p"),yl.innerHTML=ap,Ji=s(),r($e.$$.fragment),Ui=s(),cl=p("li"),cl.innerHTML=op,In=s(),r(Be.$$.fragment),Cn=s(),Ae=p("p"),Ae.textContent=rp,gn=s(),Ge=p("p"),Ge.innerHTML=Mp,$n=s(),r(ke.$$.fragment),Bn=s(),xe=p("p"),xe.innerHTML=mp,An=s(),Ze=p("p"),Ze.innerHTML=wp,Gn=s(),r(Ee.$$.fragment),kn=s(),_e=p("p"),_e.innerHTML=Tp,xn=s(),r(He.$$.fragment),Zn=s(),Re=p("p"),Re.textContent=yp,En=s(),We=p("p"),We.innerHTML=cp,_n=s(),r(Le.$$.fragment),Hn=s(),Qe=p("p"),Qe.innerHTML=up,Rn=s(),r(Ve.$$.fragment),Wn=s(),r(Xe.$$.fragment),Ln=s(),r(Fe.$$.fragment),Qn=s(),Se=p("p"),Se.textContent=Jp,Vn=s(),Ne=p("p"),Ne.innerHTML=Up,Xn=s(),Ye=p("p"),Ye.textContent=dp,Fn=s(),r(Oe.$$.fragment),Sn=s(),Pe=p("p"),Pe.innerHTML=hp,Nn=s(),ze=p("p"),ze.innerHTML=bp,Yn=s(),De=p("p"),De.textContent=fp,On=s(),qe=p("ul"),qe.innerHTML=vp,Pn=s(),Ke=p("p"),Ke.innerHTML=jp,zn=s(),et=p("p"),et.textContent=Ip,Dn=s(),r(tt.$$.fragment),qn=s(),lt=p("p"),lt.innerHTML=Cp,Kn=s(),r(nt.$$.fragment),es=s(),r(st.$$.fragment),ts=s(),r(it.$$.fragment),ls=s(),pt=p("p"),pt.textContent=gp,ns=s(),at=p("ul"),at.innerHTML=$p,ss=s(),r(ot.$$.fragment),is=s(),rt=p("p"),rt.textContent=Bp,ps=s(),Mt=p("ul"),Mt.innerHTML=Ap,as=s(),r(mt.$$.fragment),os=s(),r(wt.$$.fragment),rs=s(),r(Tt.$$.fragment),Ms=s(),yt=p("p"),yt.innerHTML=Gp,ms=s(),r(ct.$$.fragment),ws=s(),ut=p("p"),ut.textContent=kp,Ts=s(),Jt=p("ul"),Jt.innerHTML=xp,ys=s(),Ut=p("p"),Ut.innerHTML=Zp,cs=s(),r(dt.$$.fragment),us=s(),r(ht.$$.fragment),Js=s(),r(bt.$$.fragment),Us=s(),r(ft.$$.fragment),ds=s(),r(vt.$$.fragment),hs=s(),jt=p("p"),jt.innerHTML=Ep,bs=s(),r(It.$$.fragment),fs=s(),r(Ct.$$.fragment),vs=s(),r(gt.$$.fragment),js=s(),$t=p("p"),$t.textContent=_p,Is=s(),Bt=p("ul"),Bt.innerHTML=Hp,Cs=s(),r(At.$$.fragment),gs=s(),r(Gt.$$.fragment),$s=s(),kt=p("p"),kt.innerHTML=Rp,Bs=s(),xt=p("p"),xt.innerHTML=Wp,As=s(),r(Zt.$$.fragment),Gs=s(),Et=p("p"),Et.innerHTML=Lp,ks=s(),_t=p("p"),_t.innerHTML=Qp,xs=s(),Ht=p("p"),Ht.innerHTML=Vp,Zs=s(),Rt=p("p"),Rt.textContent=Xp,Es=s(),r(Wt.$$.fragment),_s=s(),Lt=p("p"),Lt.textContent=Fp,Hs=s(),Qt=p("ul"),Qt.innerHTML=Sp,Rs=s(),r(Vt.$$.fragment),Ws=s(),Xt=p("p"),Xt.innerHTML=Np,Ls=s(),Ft=p("p"),Ft.textContent=Yp,Qs=s(),r(St.$$.fragment),Vs=s(),Nt=p("p"),Nt.innerHTML=Op,Xs=s(),Yt=p("p"),Yt.textContent=Pp,Fs=s(),r(Ot.$$.fragment),Ss=s(),Pt=p("p"),Pt.innerHTML=zp,Ns=s(),zt=p("p"),zt.innerHTML=Dp,Ys=s(),r(Dt.$$.fragment),Os=s(),r(qt.$$.fragment),Ps=s(),Kt=p("p"),Kt.innerHTML=qp,zs=s(),el=p("p"),el.textContent=Kp,Ds=s(),tl=p("ul"),tl.innerHTML=ea,qs=s(),ll=p("p"),ll.innerHTML=ta,Ks=s(),nl=p("p"),nl.textContent=la,ei=s(),sl=p("ul"),sl.innerHTML=na,ti=s(),il=p("p"),il.textContent=sa,li=s(),r(pl.$$.fragment),ni=s(),al=p("p"),al.textContent=ia,si=s(),r(ol.$$.fragment),ii=s(),rl=p("p"),rl.textContent=pa,pi=s(),r(Ml.$$.fragment),ai=s(),r(ml.$$.fragment),oi=s(),dl=p("p"),this.h()},l(e){const t=wa("svelte-u9bgzb",document.head);h=a(t,"META",{name:!0,content:!0}),t.forEach(l),bl=i(e),Ul=a(e,"P",{}),Jl(Ul).forEach(l),fl=i(e),U=a(e,"DIV",{align:!0});var f=Jl(U);M(v.$$.fragment,f),wi=i(f),M(j.$$.fragment,f),Ti=i(f),I=a(f,"DIV",{align:!0,"data-svelte-h":!0}),o(I)!=="svelte-1veb663"&&(I.innerHTML=hi),yi=i(f),wl=a(f,"P",{"data-svelte-h":!0}),o(wl)!=="svelte-1fys1y4"&&(wl.innerHTML=bi),f.forEach(l),vl=i(e),M(C.$$.fragment,e),jl=i(e),g=a(e,"P",{"data-svelte-h":!0}),o(g)!=="svelte-d6xmzk"&&(g.textContent=fi),Il=i(e),b=a(e,"DIV",{align:!0,"data-svelte-h":!0}),o(b)!=="svelte-1j7mnpp"&&(b.innerHTML=vi),Cl=i(e),$=a(e,"P",{"data-svelte-h":!0}),o($)!=="svelte-n7byz3"&&($.textContent=ji),gl=i(e),B=a(e,"UL",{"data-svelte-h":!0}),o(B)!=="svelte-1qh5arg"&&(B.innerHTML=Ii),$l=i(e),M(A.$$.fragment,e),Bl=i(e),G=a(e,"UL",{"data-svelte-h":!0}),o(G)!=="svelte-pqligl"&&(G.innerHTML=Ci),Al=i(e),M(k.$$.fragment,e),Gl=i(e),M(x.$$.fragment,e),kl=i(e),Z=a(e,"P",{"data-svelte-h":!0}),o(Z)!=="svelte-1oqsfw0"&&(Z.innerHTML=gi),xl=i(e),E=a(e,"UL",{"data-svelte-h":!0}),o(E)!=="svelte-1v2vhpi"&&(E.innerHTML=$i),Zl=i(e),M(_.$$.fragment,e),El=i(e),H=a(e,"P",{"data-svelte-h":!0}),o(H)!=="svelte-1dax7ui"&&(H.innerHTML=Bi),_l=i(e),M(R.$$.fragment,e),Hl=i(e),W=a(e,"P",{"data-svelte-h":!0}),o(W)!=="svelte-g40sle"&&(W.textContent=Ai),Rl=i(e),L=a(e,"P",{"data-svelte-h":!0}),o(L)!=="svelte-jb3zpk"&&(L.innerHTML=Gi),Wl=i(e),Q=a(e,"P",{"data-svelte-h":!0}),o(Q)!=="svelte-v9f1c"&&(Q.textContent=ki),Ll=i(e),M(V.$$.fragment,e),Ql=i(e),X=a(e,"P",{"data-svelte-h":!0}),o(X)!=="svelte-t4ikzj"&&(X.innerHTML=xi),Vl=i(e),M(F.$$.fragment,e),Xl=i(e),S=a(e,"P",{"data-svelte-h":!0}),o(S)!=="svelte-1ynoy0f"&&(S.innerHTML=Zi),Fl=i(e),N=a(e,"UL",{"data-svelte-h":!0}),o(N)!=="svelte-j3y95"&&(N.innerHTML=Ei),Sl=i(e),Y=a(e,"P",{"data-svelte-h":!0}),o(Y)!=="svelte-19z57qt"&&(Y.innerHTML=_i),Nl=i(e),O=a(e,"OL",{"data-svelte-h":!0}),o(O)!=="svelte-dii2mo"&&(O.innerHTML=Hi),Yl=i(e),P=a(e,"P",{"data-svelte-h":!0}),o(P)!=="svelte-1sfbfq7"&&(P.textContent=Ri),Ol=i(e),z=a(e,"P",{"data-svelte-h":!0}),o(z)!=="svelte-1fkhipl"&&(z.innerHTML=Wi),Pl=i(e),D=a(e,"UL",{"data-svelte-h":!0}),o(D)!=="svelte-wf7hew"&&(D.innerHTML=Li),zl=i(e),q=a(e,"P",{"data-svelte-h":!0}),o(q)!=="svelte-95bpt7"&&(q.innerHTML=Qi),Dl=i(e),M(K.$$.fragment,e),ql=i(e),ee=a(e,"P",{"data-svelte-h":!0}),o(ee)!=="svelte-xme7a3"&&(ee.innerHTML=Vi),Kl=i(e),M(te.$$.fragment,e),en=i(e),le=a(e,"P",{"data-svelte-h":!0}),o(le)!=="svelte-1dn0tei"&&(le.textContent=Xi),tn=i(e),ne=a(e,"P",{"data-svelte-h":!0}),o(ne)!=="svelte-18p63as"&&(ne.innerHTML=Fi),ln=i(e),se=a(e,"UL",{"data-svelte-h":!0}),o(se)!=="svelte-x2jvgo"&&(se.innerHTML=Si),nn=i(e),ie=a(e,"P",{"data-svelte-h":!0}),o(ie)!=="svelte-16p5glo"&&(ie.innerHTML=Ni),sn=i(e),M(pe.$$.fragment,e),pn=i(e),ae=a(e,"P",{"data-svelte-h":!0}),o(ae)!=="svelte-1iu4h35"&&(ae.textContent=Yi),an=i(e),oe=a(e,"P",{"data-svelte-h":!0}),o(oe)!=="svelte-flj43g"&&(oe.innerHTML=Oi),on=i(e),M(re.$$.fragment,e),rn=i(e),Me=a(e,"P",{"data-svelte-h":!0}),o(Me)!=="svelte-18e2mnw"&&(Me.innerHTML=Pi),Mn=i(e),M(me.$$.fragment,e),mn=i(e),we=a(e,"P",{"data-svelte-h":!0}),o(we)!=="svelte-1sc75at"&&(we.innerHTML=zi),wn=i(e),Te=a(e,"P",{"data-svelte-h":!0}),o(Te)!=="svelte-16kzhnh"&&(Te.textContent=Di),Tn=i(e),ye=a(e,"UL",{"data-svelte-h":!0}),o(ye)!=="svelte-1j6uc52"&&(ye.innerHTML=qi),yn=i(e),ce=a(e,"P",{"data-svelte-h":!0}),o(ce)!=="svelte-aa5vrq"&&(ce.textContent=Ki),cn=i(e),M(ue.$$.fragment,e),un=i(e),M(Je.$$.fragment,e),Jn=i(e),Ue=a(e,"P",{"data-svelte-h":!0}),o(Ue)!=="svelte-1d24wjx"&&(Ue.textContent=ep),Un=i(e),M(de.$$.fragment,e),dn=i(e),he=a(e,"P",{"data-svelte-h":!0}),o(he)!=="svelte-gh8aaf"&&(he.textContent=tp),hn=i(e),be=a(e,"UL",{"data-svelte-h":!0}),o(be)!=="svelte-cnxtdk"&&(be.innerHTML=lp),bn=i(e),fe=a(e,"P",{"data-svelte-h":!0}),o(fe)!=="svelte-1xnhrct"&&(fe.textContent=np),fn=i(e),ve=a(e,"P",{"data-svelte-h":!0}),o(ve)!=="svelte-hir9fy"&&(ve.innerHTML=sp),vn=i(e),je=a(e,"P",{"data-svelte-h":!0}),o(je)!=="svelte-hxi6m7"&&(je.innerHTML=ip),jn=i(e),d=a(e,"OL",{});var ul=Jl(d);Ie=a(ul,"LI",{});var Mi=Jl(Ie);Tl=a(Mi,"P",{"data-svelte-h":!0}),o(Tl)!=="svelte-fao9jv"&&(Tl.innerHTML=pp),ci=i(Mi),M(Ce.$$.fragment,Mi),Mi.forEach(l),ui=i(ul),ge=a(ul,"LI",{});var mi=Jl(ge);yl=a(mi,"P",{"data-svelte-h":!0}),o(yl)!=="svelte-qtbrqq"&&(yl.innerHTML=ap),Ji=i(mi),M($e.$$.fragment,mi),mi.forEach(l),Ui=i(ul),cl=a(ul,"LI",{"data-svelte-h":!0}),o(cl)!=="svelte-1oklwn8"&&(cl.innerHTML=op),ul.forEach(l),In=i(e),M(Be.$$.fragment,e),Cn=i(e),Ae=a(e,"P",{"data-svelte-h":!0}),o(Ae)!=="svelte-14m9gn9"&&(Ae.textContent=rp),gn=i(e),Ge=a(e,"P",{"data-svelte-h":!0}),o(Ge)!=="svelte-qq0eop"&&(Ge.innerHTML=Mp),$n=i(e),M(ke.$$.fragment,e),Bn=i(e),xe=a(e,"P",{"data-svelte-h":!0}),o(xe)!=="svelte-1nvfbwr"&&(xe.innerHTML=mp),An=i(e),Ze=a(e,"P",{"data-svelte-h":!0}),o(Ze)!=="svelte-rac90g"&&(Ze.innerHTML=wp),Gn=i(e),M(Ee.$$.fragment,e),kn=i(e),_e=a(e,"P",{"data-svelte-h":!0}),o(_e)!=="svelte-btbc6u"&&(_e.innerHTML=Tp),xn=i(e),M(He.$$.fragment,e),Zn=i(e),Re=a(e,"P",{"data-svelte-h":!0}),o(Re)!=="svelte-1iayiys"&&(Re.textContent=yp),En=i(e),We=a(e,"P",{"data-svelte-h":!0}),o(We)!=="svelte-lkp8m1"&&(We.innerHTML=cp),_n=i(e),M(Le.$$.fragment,e),Hn=i(e),Qe=a(e,"P",{"data-svelte-h":!0}),o(Qe)!=="svelte-fnxu11"&&(Qe.innerHTML=up),Rn=i(e),M(Ve.$$.fragment,e),Wn=i(e),M(Xe.$$.fragment,e),Ln=i(e),M(Fe.$$.fragment,e),Qn=i(e),Se=a(e,"P",{"data-svelte-h":!0}),o(Se)!=="svelte-1q127ct"&&(Se.textContent=Jp),Vn=i(e),Ne=a(e,"P",{"data-svelte-h":!0}),o(Ne)!=="svelte-1vwdw91"&&(Ne.innerHTML=Up),Xn=i(e),Ye=a(e,"P",{"data-svelte-h":!0}),o(Ye)!=="svelte-xvepx8"&&(Ye.textContent=dp),Fn=i(e),M(Oe.$$.fragment,e),Sn=i(e),Pe=a(e,"P",{"data-svelte-h":!0}),o(Pe)!=="svelte-1c1awf"&&(Pe.innerHTML=hp),Nn=i(e),ze=a(e,"P",{"data-svelte-h":!0}),o(ze)!=="svelte-153ltkx"&&(ze.innerHTML=bp),Yn=i(e),De=a(e,"P",{"data-svelte-h":!0}),o(De)!=="svelte-czj9lu"&&(De.textContent=fp),On=i(e),qe=a(e,"UL",{"data-svelte-h":!0}),o(qe)!=="svelte-k6w02c"&&(qe.innerHTML=vp),Pn=i(e),Ke=a(e,"P",{"data-svelte-h":!0}),o(Ke)!=="svelte-r8r6fc"&&(Ke.innerHTML=jp),zn=i(e),et=a(e,"P",{"data-svelte-h":!0}),o(et)!=="svelte-1od63ew"&&(et.textContent=Ip),Dn=i(e),M(tt.$$.fragment,e),qn=i(e),lt=a(e,"P",{"data-svelte-h":!0}),o(lt)!=="svelte-1w73o54"&&(lt.innerHTML=Cp),Kn=i(e),M(nt.$$.fragment,e),es=i(e),M(st.$$.fragment,e),ts=i(e),M(it.$$.fragment,e),ls=i(e),pt=a(e,"P",{"data-svelte-h":!0}),o(pt)!=="svelte-1agdx73"&&(pt.textContent=gp),ns=i(e),at=a(e,"UL",{"data-svelte-h":!0}),o(at)!=="svelte-uu05ex"&&(at.innerHTML=$p),ss=i(e),M(ot.$$.fragment,e),is=i(e),rt=a(e,"P",{"data-svelte-h":!0}),o(rt)!=="svelte-1pp1dsy"&&(rt.textContent=Bp),ps=i(e),Mt=a(e,"UL",{"data-svelte-h":!0}),o(Mt)!=="svelte-tully7"&&(Mt.innerHTML=Ap),as=i(e),M(mt.$$.fragment,e),os=i(e),M(wt.$$.fragment,e),rs=i(e),M(Tt.$$.fragment,e),Ms=i(e),yt=a(e,"P",{"data-svelte-h":!0}),o(yt)!=="svelte-14czkd8"&&(yt.innerHTML=Gp),ms=i(e),M(ct.$$.fragment,e),ws=i(e),ut=a(e,"P",{"data-svelte-h":!0}),o(ut)!=="svelte-tmnshw"&&(ut.textContent=kp),Ts=i(e),Jt=a(e,"UL",{"data-svelte-h":!0}),o(Jt)!=="svelte-1a55we7"&&(Jt.innerHTML=xp),ys=i(e),Ut=a(e,"P",{"data-svelte-h":!0}),o(Ut)!=="svelte-1t5p2uj"&&(Ut.innerHTML=Zp),cs=i(e),M(dt.$$.fragment,e),us=i(e),M(ht.$$.fragment,e),Js=i(e),M(bt.$$.fragment,e),Us=i(e),M(ft.$$.fragment,e),ds=i(e),M(vt.$$.fragment,e),hs=i(e),jt=a(e,"P",{"data-svelte-h":!0}),o(jt)!=="svelte-1wvng11"&&(jt.innerHTML=Ep),bs=i(e),M(It.$$.fragment,e),fs=i(e),M(Ct.$$.fragment,e),vs=i(e),M(gt.$$.fragment,e),js=i(e),$t=a(e,"P",{"data-svelte-h":!0}),o($t)!=="svelte-1t4v0qt"&&($t.textContent=_p),Is=i(e),Bt=a(e,"UL",{"data-svelte-h":!0}),o(Bt)!=="svelte-18onxv5"&&(Bt.innerHTML=Hp),Cs=i(e),M(At.$$.fragment,e),gs=i(e),M(Gt.$$.fragment,e),$s=i(e),kt=a(e,"P",{"data-svelte-h":!0}),o(kt)!=="svelte-1yvco1"&&(kt.innerHTML=Rp),Bs=i(e),xt=a(e,"P",{"data-svelte-h":!0}),o(xt)!=="svelte-aodxwn"&&(xt.innerHTML=Wp),As=i(e),M(Zt.$$.fragment,e),Gs=i(e),Et=a(e,"P",{"data-svelte-h":!0}),o(Et)!=="svelte-ib0dvz"&&(Et.innerHTML=Lp),ks=i(e),_t=a(e,"P",{"data-svelte-h":!0}),o(_t)!=="svelte-zhy0oj"&&(_t.innerHTML=Qp),xs=i(e),Ht=a(e,"P",{"data-svelte-h":!0}),o(Ht)!=="svelte-jd4xe1"&&(Ht.innerHTML=Vp),Zs=i(e),Rt=a(e,"P",{"data-svelte-h":!0}),o(Rt)!=="svelte-y5dh1z"&&(Rt.textContent=Xp),Es=i(e),M(Wt.$$.fragment,e),_s=i(e),Lt=a(e,"P",{"data-svelte-h":!0}),o(Lt)!=="svelte-1u32bh1"&&(Lt.textContent=Fp),Hs=i(e),Qt=a(e,"UL",{"data-svelte-h":!0}),o(Qt)!=="svelte-tltmil"&&(Qt.innerHTML=Sp),Rs=i(e),M(Vt.$$.fragment,e),Ws=i(e),Xt=a(e,"P",{"data-svelte-h":!0}),o(Xt)!=="svelte-102cn09"&&(Xt.innerHTML=Np),Ls=i(e),Ft=a(e,"P",{"data-svelte-h":!0}),o(Ft)!=="svelte-d3up34"&&(Ft.textContent=Yp),Qs=i(e),M(St.$$.fragment,e),Vs=i(e),Nt=a(e,"P",{"data-svelte-h":!0}),o(Nt)!=="svelte-vvare"&&(Nt.innerHTML=Op),Xs=i(e),Yt=a(e,"P",{"data-svelte-h":!0}),o(Yt)!=="svelte-19ffnko"&&(Yt.textContent=Pp),Fs=i(e),M(Ot.$$.fragment,e),Ss=i(e),Pt=a(e,"P",{"data-svelte-h":!0}),o(Pt)!=="svelte-mmumsn"&&(Pt.innerHTML=zp),Ns=i(e),zt=a(e,"P",{"data-svelte-h":!0}),o(zt)!=="svelte-yfm016"&&(zt.innerHTML=Dp),Ys=i(e),M(Dt.$$.fragment,e),Os=i(e),M(qt.$$.fragment,e),Ps=i(e),Kt=a(e,"P",{"data-svelte-h":!0}),o(Kt)!=="svelte-gwqifv"&&(Kt.innerHTML=qp),zs=i(e),el=a(e,"P",{"data-svelte-h":!0}),o(el)!=="svelte-7oyu3d"&&(el.textContent=Kp),Ds=i(e),tl=a(e,"UL",{"data-svelte-h":!0}),o(tl)!=="svelte-dd3lq6"&&(tl.innerHTML=ea),qs=i(e),ll=a(e,"P",{"data-svelte-h":!0}),o(ll)!=="svelte-pyoa6s"&&(ll.innerHTML=ta),Ks=i(e),nl=a(e,"P",{"data-svelte-h":!0}),o(nl)!=="svelte-60infa"&&(nl.textContent=la),ei=i(e),sl=a(e,"UL",{"data-svelte-h":!0}),o(sl)!=="svelte-1h6e2xy"&&(sl.innerHTML=na),ti=i(e),il=a(e,"P",{"data-svelte-h":!0}),o(il)!=="svelte-cldnqh"&&(il.textContent=sa),li=i(e),M(pl.$$.fragment,e),ni=i(e),al=a(e,"P",{"data-svelte-h":!0}),o(al)!=="svelte-1yf58q7"&&(al.textContent=ia),si=i(e),M(ol.$$.fragment,e),ii=i(e),rl=a(e,"P",{"data-svelte-h":!0}),o(rl)!=="svelte-1yegbm9"&&(rl.textContent=pa),pi=i(e),M(Ml.$$.fragment,e),ai=i(e),M(ml.$$.fragment,e),oi=i(e),dl=a(e,"P",{}),Jl(dl).forEach(l),this.h()},h(){hl(h,"name","hf:doc:metadata"),hl(h,"content",ua),hl(I,"align","center"),hl(U,"align","center"),hl(b,"align","center")},m(e,t){J(document.head,h),n(e,bl,t),n(e,Ul,t),n(e,fl,t),n(e,U,t),m(v,U,null),J(U,wi),m(j,U,null),J(U,Ti),J(U,I),J(U,yi),J(U,wl),n(e,vl,t),m(C,e,t),n(e,jl,t),n(e,g,t),n(e,Il,t),n(e,b,t),n(e,Cl,t),n(e,$,t),n(e,gl,t),n(e,B,t),n(e,$l,t),m(A,e,t),n(e,Bl,t),n(e,G,t),n(e,Al,t),m(k,e,t),n(e,Gl,t),m(x,e,t),n(e,kl,t),n(e,Z,t),n(e,xl,t),n(e,E,t),n(e,Zl,t),m(_,e,t),n(e,El,t),n(e,H,t),n(e,_l,t),m(R,e,t),n(e,Hl,t),n(e,W,t),n(e,Rl,t),n(e,L,t),n(e,Wl,t),n(e,Q,t),n(e,Ll,t),m(V,e,t),n(e,Ql,t),n(e,X,t),n(e,Vl,t),m(F,e,t),n(e,Xl,t),n(e,S,t),n(e,Fl,t),n(e,N,t),n(e,Sl,t),n(e,Y,t),n(e,Nl,t),n(e,O,t),n(e,Yl,t),n(e,P,t),n(e,Ol,t),n(e,z,t),n(e,Pl,t),n(e,D,t),n(e,zl,t),n(e,q,t),n(e,Dl,t),m(K,e,t),n(e,ql,t),n(e,ee,t),n(e,Kl,t),m(te,e,t),n(e,en,t),n(e,le,t),n(e,tn,t),n(e,ne,t),n(e,ln,t),n(e,se,t),n(e,nn,t),n(e,ie,t),n(e,sn,t),m(pe,e,t),n(e,pn,t),n(e,ae,t),n(e,an,t),n(e,oe,t),n(e,on,t),m(re,e,t),n(e,rn,t),n(e,Me,t),n(e,Mn,t),m(me,e,t),n(e,mn,t),n(e,we,t),n(e,wn,t),n(e,Te,t),n(e,Tn,t),n(e,ye,t),n(e,yn,t),n(e,ce,t),n(e,cn,t),m(ue,e,t),n(e,un,t),m(Je,e,t),n(e,Jn,t),n(e,Ue,t),n(e,Un,t),m(de,e,t),n(e,dn,t),n(e,he,t),n(e,hn,t),n(e,be,t),n(e,bn,t),n(e,fe,t),n(e,fn,t),n(e,ve,t),n(e,vn,t),n(e,je,t),n(e,jn,t),n(e,d,t),J(d,Ie),J(Ie,Tl),J(Ie,ci),m(Ce,Ie,null),J(d,ui),J(d,ge),J(ge,yl),J(ge,Ji),m($e,ge,null),J(d,Ui),J(d,cl),n(e,In,t),m(Be,e,t),n(e,Cn,t),n(e,Ae,t),n(e,gn,t),n(e,Ge,t),n(e,$n,t),m(ke,e,t),n(e,Bn,t),n(e,xe,t),n(e,An,t),n(e,Ze,t),n(e,Gn,t),m(Ee,e,t),n(e,kn,t),n(e,_e,t),n(e,xn,t),m(He,e,t),n(e,Zn,t),n(e,Re,t),n(e,En,t),n(e,We,t),n(e,_n,t),m(Le,e,t),n(e,Hn,t),n(e,Qe,t),n(e,Rn,t),m(Ve,e,t),n(e,Wn,t),m(Xe,e,t),n(e,Ln,t),m(Fe,e,t),n(e,Qn,t),n(e,Se,t),n(e,Vn,t),n(e,Ne,t),n(e,Xn,t),n(e,Ye,t),n(e,Fn,t),m(Oe,e,t),n(e,Sn,t),n(e,Pe,t),n(e,Nn,t),n(e,ze,t),n(e,Yn,t),n(e,De,t),n(e,On,t),n(e,qe,t),n(e,Pn,t),n(e,Ke,t),n(e,zn,t),n(e,et,t),n(e,Dn,t),m(tt,e,t),n(e,qn,t),n(e,lt,t),n(e,Kn,t),m(nt,e,t),n(e,es,t),m(st,e,t),n(e,ts,t),m(it,e,t),n(e,ls,t),n(e,pt,t),n(e,ns,t),n(e,at,t),n(e,ss,t),m(ot,e,t),n(e,is,t),n(e,rt,t),n(e,ps,t),n(e,Mt,t),n(e,as,t),m(mt,e,t),n(e,os,t),m(wt,e,t),n(e,rs,t),m(Tt,e,t),n(e,Ms,t),n(e,yt,t),n(e,ms,t),m(ct,e,t),n(e,ws,t),n(e,ut,t),n(e,Ts,t),n(e,Jt,t),n(e,ys,t),n(e,Ut,t),n(e,cs,t),m(dt,e,t),n(e,us,t),m(ht,e,t),n(e,Js,t),m(bt,e,t),n(e,Us,t),m(ft,e,t),n(e,ds,t),m(vt,e,t),n(e,hs,t),n(e,jt,t),n(e,bs,t),m(It,e,t),n(e,fs,t),m(Ct,e,t),n(e,vs,t),m(gt,e,t),n(e,js,t),n(e,$t,t),n(e,Is,t),n(e,Bt,t),n(e,Cs,t),m(At,e,t),n(e,gs,t),m(Gt,e,t),n(e,$s,t),n(e,kt,t),n(e,Bs,t),n(e,xt,t),n(e,As,t),m(Zt,e,t),n(e,Gs,t),n(e,Et,t),n(e,ks,t),n(e,_t,t),n(e,xs,t),n(e,Ht,t),n(e,Zs,t),n(e,Rt,t),n(e,Es,t),m(Wt,e,t),n(e,_s,t),n(e,Lt,t),n(e,Hs,t),n(e,Qt,t),n(e,Rs,t),m(Vt,e,t),n(e,Ws,t),n(e,Xt,t),n(e,Ls,t),n(e,Ft,t),n(e,Qs,t),m(St,e,t),n(e,Vs,t),n(e,Nt,t),n(e,Xs,t),n(e,Yt,t),n(e,Fs,t),m(Ot,e,t),n(e,Ss,t),n(e,Pt,t),n(e,Ns,t),n(e,zt,t),n(e,Ys,t),m(Dt,e,t),n(e,Os,t),m(qt,e,t),n(e,Ps,t),n(e,Kt,t),n(e,zs,t),n(e,el,t),n(e,Ds,t),n(e,tl,t),n(e,qs,t),n(e,ll,t),n(e,Ks,t),n(e,nl,t),n(e,ei,t),n(e,sl,t),n(e,ti,t),n(e,il,t),n(e,li,t),m(pl,e,t),n(e,ni,t),n(e,al,t),n(e,si,t),m(ol,e,t),n(e,ii,t),n(e,rl,t),n(e,pi,t),m(Ml,e,t),n(e,ai,t),m(ml,e,t),n(e,oi,t),n(e,dl,t),ri=!0},p:oa,i(e){ri||(w(v.$$.fragment,e),w(j.$$.fragment,e),w(C.$$.fragment,e),w(A.$$.fragment,e),w(k.$$.fragment,e),w(x.$$.fragment,e),w(_.$$.fragment,e),w(R.$$.fragment,e),w(V.$$.fragment,e),w(F.$$.fragment,e),w(K.$$.fragment,e),w(te.$$.fragment,e),w(pe.$$.fragment,e),w(re.$$.fragment,e),w(me.$$.fragment,e),w(ue.$$.fragment,e),w(Je.$$.fragment,e),w(de.$$.fragment,e),w(Ce.$$.fragment,e),w($e.$$.fragment,e),w(Be.$$.fragment,e),w(ke.$$.fragment,e),w(Ee.$$.fragment,e),w(He.$$.fragment,e),w(Le.$$.fragment,e),w(Ve.$$.fragment,e),w(Xe.$$.fragment,e),w(Fe.$$.fragment,e),w(Oe.$$.fragment,e),w(tt.$$.fragment,e),w(nt.$$.fragment,e),w(st.$$.fragment,e),w(it.$$.fragment,e),w(ot.$$.fragment,e),w(mt.$$.fragment,e),w(wt.$$.fragment,e),w(Tt.$$.fragment,e),w(ct.$$.fragment,e),w(dt.$$.fragment,e),w(ht.$$.fragment,e),w(bt.$$.fragment,e),w(ft.$$.fragment,e),w(vt.$$.fragment,e),w(It.$$.fragment,e),w(Ct.$$.fragment,e),w(gt.$$.fragment,e),w(At.$$.fragment,e),w(Gt.$$.fragment,e),w(Zt.$$.fragment,e),w(Wt.$$.fragment,e),w(Vt.$$.fragment,e),w(St.$$.fragment,e),w(Ot.$$.fragment,e),w(Dt.$$.fragment,e),w(qt.$$.fragment,e),w(pl.$$.fragment,e),w(ol.$$.fragment,e),w(Ml.$$.fragment,e),w(ml.$$.fragment,e),ri=!0)},o(e){T(v.$$.fragment,e),T(j.$$.fragment,e),T(C.$$.fragment,e),T(A.$$.fragment,e),T(k.$$.fragment,e),T(x.$$.fragment,e),T(_.$$.fragment,e),T(R.$$.fragment,e),T(V.$$.fragment,e),T(F.$$.fragment,e),T(K.$$.fragment,e),T(te.$$.fragment,e),T(pe.$$.fragment,e),T(re.$$.fragment,e),T(me.$$.fragment,e),T(ue.$$.fragment,e),T(Je.$$.fragment,e),T(de.$$.fragment,e),T(Ce.$$.fragment,e),T($e.$$.fragment,e),T(Be.$$.fragment,e),T(ke.$$.fragment,e),T(Ee.$$.fragment,e),T(He.$$.fragment,e),T(Le.$$.fragment,e),T(Ve.$$.fragment,e),T(Xe.$$.fragment,e),T(Fe.$$.fragment,e),T(Oe.$$.fragment,e),T(tt.$$.fragment,e),T(nt.$$.fragment,e),T(st.$$.fragment,e),T(it.$$.fragment,e),T(ot.$$.fragment,e),T(mt.$$.fragment,e),T(wt.$$.fragment,e),T(Tt.$$.fragment,e),T(ct.$$.fragment,e),T(dt.$$.fragment,e),T(ht.$$.fragment,e),T(bt.$$.fragment,e),T(ft.$$.fragment,e),T(vt.$$.fragment,e),T(It.$$.fragment,e),T(Ct.$$.fragment,e),T(gt.$$.fragment,e),T(At.$$.fragment,e),T(Gt.$$.fragment,e),T(Zt.$$.fragment,e),T(Wt.$$.fragment,e),T(Vt.$$.fragment,e),T(St.$$.fragment,e),T(Ot.$$.fragment,e),T(Dt.$$.fragment,e),T(qt.$$.fragment,e),T(pl.$$.fragment,e),T(ol.$$.fragment,e),T(Ml.$$.fragment,e),T(ml.$$.fragment,e),ri=!1},d(e){e&&(l(bl),l(Ul),l(fl),l(U),l(vl),l(jl),l(g),l(Il),l(b),l(Cl),l($),l(gl),l(B),l($l),l(Bl),l(G),l(Al),l(Gl),l(kl),l(Z),l(xl),l(E),l(Zl),l(El),l(H),l(_l),l(Hl),l(W),l(Rl),l(L),l(Wl),l(Q),l(Ll),l(Ql),l(X),l(Vl),l(Xl),l(S),l(Fl),l(N),l(Sl),l(Y),l(Nl),l(O),l(Yl),l(P),l(Ol),l(z),l(Pl),l(D),l(zl),l(q),l(Dl),l(ql),l(ee),l(Kl),l(en),l(le),l(tn),l(ne),l(ln),l(se),l(nn),l(ie),l(sn),l(pn),l(ae),l(an),l(oe),l(on),l(rn),l(Me),l(Mn),l(mn),l(we),l(wn),l(Te),l(Tn),l(ye),l(yn),l(ce),l(cn),l(un),l(Jn),l(Ue),l(Un),l(dn),l(he),l(hn),l(be),l(bn),l(fe),l(fn),l(ve),l(vn),l(je),l(jn),l(d),l(In),l(Cn),l(Ae),l(gn),l(Ge),l($n),l(Bn),l(xe),l(An),l(Ze),l(Gn),l(kn),l(_e),l(xn),l(Zn),l(Re),l(En),l(We),l(_n),l(Hn),l(Qe),l(Rn),l(Wn),l(Ln),l(Qn),l(Se),l(Vn),l(Ne),l(Xn),l(Ye),l(Fn),l(Sn),l(Pe),l(Nn),l(ze),l(Yn),l(De),l(On),l(qe),l(Pn),l(Ke),l(zn),l(et),l(Dn),l(qn),l(lt),l(Kn),l(es),l(ts),l(ls),l(pt),l(ns),l(at),l(ss),l(is),l(rt),l(ps),l(Mt),l(as),l(os),l(rs),l(Ms),l(yt),l(ms),l(ws),l(ut),l(Ts),l(Jt),l(ys),l(Ut),l(cs),l(us),l(Js),l(Us),l(ds),l(hs),l(jt),l(bs),l(fs),l(vs),l(js),l($t),l(Is),l(Bt),l(Cs),l(gs),l($s),l(kt),l(Bs),l(xt),l(As),l(Gs),l(Et),l(ks),l(_t),l(xs),l(Ht),l(Zs),l(Rt),l(Es),l(_s),l(Lt),l(Hs),l(Qt),l(Rs),l(Ws),l(Xt),l(Ls),l(Ft),l(Qs),l(Vs),l(Nt),l(Xs),l(Yt),l(Fs),l(Ss),l(Pt),l(Ns),l(zt),l(Ys),l(Os),l(Ps),l(Kt),l(zs),l(el),l(Ds),l(tl),l(qs),l(ll),l(Ks),l(nl),l(ei),l(sl),l(ti),l(il),l(li),l(ni),l(al),l(si),l(ii),l(rl),l(pi),l(ai),l(oi),l(dl)),l(h),y(v),y(j),y(C,e),y(A,e),y(k,e),y(x,e),y(_,e),y(R,e),y(V,e),y(F,e),y(K,e),y(te,e),y(pe,e),y(re,e),y(me,e),y(ue,e),y(Je,e),y(de,e),y(Ce),y($e),y(Be,e),y(ke,e),y(Ee,e),y(He,e),y(Le,e),y(Ve,e),y(Xe,e),y(Fe,e),y(Oe,e),y(tt,e),y(nt,e),y(st,e),y(it,e),y(ot,e),y(mt,e),y(wt,e),y(Tt,e),y(ct,e),y(dt,e),y(ht,e),y(bt,e),y(ft,e),y(vt,e),y(It,e),y(Ct,e),y(gt,e),y(At,e),y(Gt,e),y(Zt,e),y(Wt,e),y(Vt,e),y(St,e),y(Ot,e),y(Dt,e),y(qt,e),y(pl,e),y(ol,e),y(Ml,e),y(ml,e)}}}const ua='{"title":"OpenApp Environment","local":"openapp-environment","sections":[{"title":"Overview","local":"overview","sections":[],"depth":2},{"title":"Features","local":"features","sections":[],"depth":2},{"title":"Directory Structure","local":"directory-structure","sections":[],"depth":2},{"title":"Installation","local":"installation","sections":[{"title":"Option 1: Docker Mode (Recommended)","local":"option-1-docker-mode-recommended","sections":[],"depth":3},{"title":"Option 2: Local Mode","local":"option-2-local-mode","sections":[],"depth":3}],"depth":2},{"title":"Quick Start","local":"quick-start","sections":[{"title":"Running with Docker (Recommended)","local":"running-with-docker-recommended","sections":[],"depth":3},{"title":"Running Locally","local":"running-locally","sections":[],"depth":3},{"title":"Example Script","local":"example-script","sections":[],"depth":3},{"title":"Visualizing Agent Interactions","local":"visualizing-agent-interactions","sections":[],"depth":3},{"title":"Basic Usage","local":"basic-usage","sections":[],"depth":3},{"title":"Action Types","local":"action-types","sections":[],"depth":3},{"title":"Observations","local":"observations","sections":[],"depth":3}],"depth":2},{"title":"Configuration","local":"configuration","sections":[{"title":"Environment Parameters","local":"environment-parameters","sections":[],"depth":3}],"depth":2},{"title":"Tasks and Rewards","local":"tasks-and-rewards","sections":[],"depth":2},{"title":"Example: Task-Based Training","local":"example-task-based-training","sections":[],"depth":2},{"title":"Development","local":"development","sections":[{"title":"Running Server Locally (without Docker)","local":"running-server-locally-without-docker","sections":[],"depth":3},{"title":"Testing","local":"testing","sections":[],"depth":3}],"depth":2},{"title":"Attribution","local":"attribution","sections":[],"depth":2},{"title":"Troubleshooting","local":"troubleshooting","sections":[{"title":"Docker Build Issues","local":"docker-build-issues","sections":[],"depth":3},{"title":"Local Mode Issues","local":"local-mode-issues","sections":[],"depth":3},{"title":"Performance Issues","local":"performance-issues","sections":[],"depth":3}],"depth":2},{"title":"License","local":"license","sections":[],"depth":2},{"title":"Citation","local":"citation","sections":[],"depth":2}],"depth":1}';function Ja(di){return ra(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class fa extends Ma{constructor(h){super(),ma(this,h,Ja,ca,aa,{})}}export{fa as component}; | |
Xet Storage Details
- Size:
- 67.9 kB
- Xet hash:
- 01fe860bdfcf48fad70c8fda0c36801fe0527b5d33d75b58932f21296ca70819
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.