Buckets:
| import{s as el,n as tl,o as ll}from"../chunks/scheduler.2b22cead.js";import{S as nl,i as il,e as y,s as i,c as a,h as sl,a as c,d as l,b as s,f as Ot,g as M,j as U,k as Kt,l as al,m as n,n as p,t as o,o as m,p as r}from"../chunks/index.1a0e8013.js";import{C as Ml,H as u,E as pl}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.a996943c.js";import{C as T}from"../chunks/CodeBlock.276436ae.js";function ol(ht){let w,$e,fe,ge,d,ve,J,je,f,It="A gridworld maze where the agent must navigate from a start cell to an exit while avoiding walls.",be,C,he,$,At="The default environment ships with a single 8x8 maze:",Ie,g,Ae,v,Zt="<code>0</code> is an empty cell and <code>1</code> is a wall. Coordinates are <code>(col, row)</code> with <code>(0, 0)</code> at the upper-left.",Ze,j,Ee,b,Et="The simplest way to use the Maze environment is through the <code>MazeEnv</code> client:",Ve,h,We,I,Vt="That’s it! The <code>MazeEnv.from_docker_image()</code> method handles:",ze,A,Wt="<li>Starting the Docker container</li> <li>Waiting for the server to be ready</li> <li>Connecting to the environment</li> <li>Container cleanup when you call <code>close()</code></li>",Be,Z,Ge,E,zt="From the <strong>environment directory</strong> (<code>envs/maze_env/</code>):",Fe,V,xe,W,ke,z,Bt="You can easily deploy your OpenEnv environment to Hugging Face Spaces using the <code>openenv push</code> command:",Ne,B,He,G,Gt="The <code>openenv push</code> command will:",Se,F,Ft="<li>Validate that the directory is an OpenEnv environment (checks for <code>openenv.yaml</code>)</li> <li>Prepare a custom build for Hugging Face Docker space (enables web interface)</li> <li>Upload to Hugging Face (ensuring you’re logged in)</li>",_e,x,Le,k,xt="<li>Authenticate with Hugging Face: The command will prompt for login if not already authenticated</li>",Qe,N,Re,H,kt="<li><code>--directory</code>, <code>-d</code>: Directory containing the OpenEnv environment (defaults to current directory)</li> <li><code>--repo-id</code>, <code>-r</code>: Repository ID in format ‘username/repo-name’ (defaults to ‘username/env-name’ from openenv.yaml)</li> <li><code>--base-image</code>, <code>-b</code>: Base Docker image to use (overrides Dockerfile FROM)</li> <li><code>--private</code>: Deploy the space as private (default: public)</li>",Ye,S,Xe,_,De,L,Nt=`After deployment, your space will be available at: | |
| <code>https://huggingface.co/spaces/<repo-id></code>`,Pe,Q,qe,R,Oe,Y,Ke,X,et,D,Ht="<strong>MazeAction</strong>: Contains a single field",tt,P,St=`<li><code>action</code> (int) - Movement action | |
| <ul><li>0 = move up</li> <li>1 = move down</li> <li>2 = move left</li> <li>3 = move right</li></ul></li>`,lt,q,nt,O,_t="<strong>MazeObservation</strong>: Per-step observation payload",it,K,Lt=`<li><code>current_position</code> (List[int]) - Agent position as <code>[col, row]</code></li> <li><code>legal_actions</code> (List[int]) - Valid actions from the current position</li> <li><code>metadata</code> (dict) - Extra info: | |
| <ul><li><code>maze</code>: 2D grid (0 = empty, 1 = wall)</li> <li><code>status</code>: “playing”, “win”, or “lose”</li> <li><code>exit_cell</code>: Exit position as <code>[col, row]</code></li> <li><code>step</code>: Current step count</li></ul></li>`,st,ee,at,te,Qt="<strong>MazeState</strong>: Server-side state snapshot",Mt,le,Rt="<li><code>episode_id</code> (str) - Unique identifier for the current episode</li> <li><code>step_count</code> (int) - Number of steps taken</li> <li><code>done</code> (bool) - Whether the episode has ended</li> <li><code>current_position</code> (List[int]) - Current agent position</li> <li><code>exit_cell</code> (List[int]) - Exit position</li> <li><code>status</code> (str) - “playing”, “win”, or “lose”</li>",pt,ne,ot,ie,Yt="The reward follows the underlying maze rules:",mt,se,Xt="<li>Small penalty for a move (<code>-0.05</code>)</li> <li>Penalty for revisiting a cell (<code>-0.25</code>)</li> <li>Penalty for invalid move (<code>-0.75</code>)</li> <li>Reward for reaching the exit (<code>+10.0</code>)</li>",rt,ae,yt,Me,ct,pe,Dt="This environment does not rely on environment variables. Customize the maze in code (see Development & Testing).",Ut,oe,ut,me,wt,re,Pt="If you already have a Maze environment server running:",Tt,ye,dt,ce,Jt,Ue,ft,ue,Ct,we,$t,Te,gt,de,qt='<li><a href="https://github.com/erikdelange/Reinforcement-Learning-Maze" rel="nofollow">Reinforcement-Learning-Maze (original implementation)</a></li>',vt,Je,jt,Ce,bt;return d=new Ml({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),J=new u({props:{title:"Maze Environment",local:"maze-environment",headingTag:"h1"}}),C=new u({props:{title:"Maze Layout",local:"maze-layout",headingTag:"h2"}}),g=new T({props:{code:"MCUyMDAlMjAwJTIwMCUyMDAlMjAxJTIwMCUyMDAlMEExJTIwMSUyMDAlMjAxJTIwMCUyMDElMjAwJTIwMSUwQTAlMjAwJTIwMCUyMDElMjAwJTIwMCUyMDAlMjAxJTBBMCUyMDElMjAxJTIwMSUyMDElMjAxJTIwMCUyMDAlMEEwJTIwMCUyMDAlMjAwJTIwMCUyMDAlMjAxJTIwMCUwQTElMjAwJTIwMSUyMDElMjAxJTIwMCUyMDAlMjAwJTBBMCUyMDAlMjAwJTIwMCUyMDElMjAwJTIwMSUyMDAlMEEwJTIwMSUyMDElMjAwJTIwMCUyMDAlMjAwJTIwMA==",highlighted:`0 0 0 0 0 1 0 0 | |
| 1 1 0 1 0 1 0 1 | |
| 0 0 0 1 0 0 0 1 | |
| 0 1 1 1 1 1 0 0 | |
| 0 0 0 0 0 0 1 0 | |
| 1 0 1 1 1 0 0 0 | |
| 0 0 0 0 1 0 1 0 | |
| 0 1 1 0 0 0 0 0`,lang:"text",wrap:!1}}),j=new u({props:{title:"Quick Start",local:"quick-start",headingTag:"h2"}}),h=new T({props:{code:"ZnJvbSUyMG1hemVfZW52JTIwaW1wb3J0JTIwTWF6ZUFjdGlvbiUyQyUyME1hemVFbnYlMEElMEF0cnklM0ElMEElMjAlMjAlMjAlMjAlMjMlMjBDcmVhdGUlMjBlbnZpcm9ubWVudCUyMGZyb20lMjBEb2NrZXIlMjBpbWFnZSUwQSUyMCUyMCUyMCUyMGVudiUyMCUzRCUyME1hemVFbnYuZnJvbV9kb2NrZXJfaW1hZ2UoJTIybWF6ZV9lbnYtZW52JTNBbGF0ZXN0JTIyKSUwQSUwQSUyMCUyMCUyMCUyMCUyMyUyMFJlc2V0JTIwdG8lMjBzdGFydCUyMGElMjBuZXclMjBlcGlzb2RlJTBBJTIwJTIwJTIwJTIwcmVzdWx0JTIwJTNEJTIwZW52LnJlc2V0KCklMEElMjAlMjAlMjAlMjBwcmludChmJTIyU3RhcnQlMjBwb3NpdGlvbiUzQSUyMCU3QnJlc3VsdC5vYnNlcnZhdGlvbi5jdXJyZW50X3Bvc2l0aW9uJTdEJTIyKSUwQSUyMCUyMCUyMCUyMHByaW50KGYlMjJMZWdhbCUyMGFjdGlvbnMlM0ElMjAlN0JyZXN1bHQub2JzZXJ2YXRpb24ubGVnYWxfYWN0aW9ucyU3RCUyMiklMEElMEElMjAlMjAlMjAlMjAlMjMlMjBQbGF5JTIwdW50aWwlMjBkb25lJTBBJTIwJTIwJTIwJTIwd2hpbGUlMjBub3QlMjByZXN1bHQuZG9uZSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGFjdGlvbl9pZCUyMCUzRCUyMHJlc3VsdC5vYnNlcnZhdGlvbi5sZWdhbF9hY3Rpb25zJTVCMCU1RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJlc3VsdCUyMCUzRCUyMGVudi5zdGVwKE1hemVBY3Rpb24oYWN0aW9uJTNEYWN0aW9uX2lkKSklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBwcmludChmJTIyUG9zaXRpb24lM0ElMjAlN0JyZXN1bHQub2JzZXJ2YXRpb24uY3VycmVudF9wb3NpdGlvbiU3RCUyMiklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBwcmludChmJTIyUmV3YXJkJTNBJTIwJTdCcmVzdWx0LnJld2FyZCU3RCUyQyUyMERvbmUlM0ElMjAlN0JyZXN1bHQuZG9uZSU3RCUyMiklMEElMEFmaW5hbGx5JTNBJTBBJTIwJTIwJTIwJTIwJTIzJTIwQWx3YXlzJTIwY2xlYW4lMjB1cCUwQSUyMCUyMCUyMCUyMGVudi5jbG9zZSgp",highlighted:`<span class="hljs-keyword">from</span> maze_env <span class="hljs-keyword">import</span> MazeAction, MazeEnv | |
| <span class="hljs-keyword">try</span>: | |
| <span class="hljs-comment"># Create environment from Docker image</span> | |
| env = MazeEnv.from_docker_image(<span class="hljs-string">"maze_env-env:latest"</span>) | |
| <span class="hljs-comment"># Reset to start a new episode</span> | |
| result = env.reset() | |
| <span class="hljs-built_in">print</span>(<span class="hljs-string">f"Start position: <span class="hljs-subst">{result.observation.current_position}</span>"</span>) | |
| <span class="hljs-built_in">print</span>(<span class="hljs-string">f"Legal actions: <span class="hljs-subst">{result.observation.legal_actions}</span>"</span>) | |
| <span class="hljs-comment"># Play until done</span> | |
| <span class="hljs-keyword">while</span> <span class="hljs-keyword">not</span> result.done: | |
| action_id = result.observation.legal_actions[<span class="hljs-number">0</span>] | |
| result = env.step(MazeAction(action=action_id)) | |
| <span class="hljs-built_in">print</span>(<span class="hljs-string">f"Position: <span class="hljs-subst">{result.observation.current_position}</span>"</span>) | |
| <span class="hljs-built_in">print</span>(<span class="hljs-string">f"Reward: <span class="hljs-subst">{result.reward}</span>, Done: <span class="hljs-subst">{result.done}</span>"</span>) | |
| <span class="hljs-keyword">finally</span>: | |
| <span class="hljs-comment"># Always clean up</span> | |
| env.close()`,lang:"python",wrap:!1}}),Z=new u({props:{title:"Building the Docker Image",local:"building-the-docker-image",headingTag:"h2"}}),V=new T({props:{code:"ZG9ja2VyJTIwYnVpbGQlMjAtdCUyMG1hemVfZW52LWVudiUzQWxhdGVzdCUyMC1mJTIwc2VydmVyJTJGRG9ja2VyZmlsZSUyMC4=",highlighted:"docker build -t maze_env-env:latest -f server/Dockerfile .",lang:"bash",wrap:!1}}),W=new u({props:{title:"Deploying to Hugging Face Spaces",local:"deploying-to-hugging-face-spaces",headingTag:"h2"}}),B=new T({props:{code:"JTIzJTIwRnJvbSUyMHRoZSUyMGVudmlyb25tZW50JTIwZGlyZWN0b3J5JTIwKGVudnMlMkZtYXplX2VudiUyRiklMEFvcGVuZW52JTIwcHVzaCUwQSUwQSUyMyUyME9yJTIwc3BlY2lmeSUyMG9wdGlvbnMlMEFvcGVuZW52JTIwcHVzaCUyMC0tbmFtZXNwYWNlJTIwbXktb3JnJTIwLS1wcml2YXRl",highlighted:`<span class="hljs-comment"># From the environment directory (envs/maze_env/)</span> | |
| openenv push | |
| <span class="hljs-comment"># Or specify options</span> | |
| openenv push --namespace my-org --private`,lang:"bash",wrap:!1}}),x=new u({props:{title:"Prerequisites",local:"prerequisites",headingTag:"h3"}}),N=new u({props:{title:"Options",local:"options",headingTag:"h3"}}),S=new u({props:{title:"Examples",local:"examples",headingTag:"h3"}}),_=new T({props:{code:"JTIzJTIwUHVzaCUyMHRvJTIweW91ciUyMHBlcnNvbmFsJTIwbmFtZXNwYWNlJTIwKGRlZmF1bHRzJTIwdG8lMjB1c2VybmFtZSUyRmVudi1uYW1lJTIwZnJvbSUyMG9wZW5lbnYueWFtbCklMEFvcGVuZW52JTIwcHVzaCUwQSUwQSUyMyUyMFB1c2glMjB0byUyMGElMjBzcGVjaWZpYyUyMHJlcG9zaXRvcnklMEFvcGVuZW52JTIwcHVzaCUyMC0tcmVwby1pZCUyMG15LW9yZyUyRm1hemUtZW52JTBBJTBBJTIzJTIwUHVzaCUyMHdpdGglMjBhJTIwY3VzdG9tJTIwYmFzZSUyMGltYWdlJTBBb3BlbmVudiUyMHB1c2glMjAtLWJhc2UtaW1hZ2UlMjBnaGNyLmlvJTJGaHVnZ2luZ2ZhY2UlMkZvcGVuZW52LWJhc2UlM0FsYXRlc3QlMEElMEElMjMlMjBQdXNoJTIwYXMlMjBhJTIwcHJpdmF0ZSUyMHNwYWNlJTBBb3BlbmVudiUyMHB1c2glMjAtLXByaXZhdGUlMEElMEElMjMlMjBDb21iaW5lJTIwb3B0aW9ucyUwQW9wZW5lbnYlMjBwdXNoJTIwLS1yZXBvLWlkJTIwbXktb3JnJTJGbWF6ZS1lbnYlMjAtLWJhc2UtaW1hZ2UlMjBjdXN0b20tYmFzZSUzQWxhdGVzdCUyMC0tcHJpdmF0ZQ==",highlighted:`<span class="hljs-comment"># Push to your personal namespace (defaults to username/env-name from openenv.yaml)</span> | |
| openenv push | |
| <span class="hljs-comment"># Push to a specific repository</span> | |
| openenv push --repo-id my-org/maze-env | |
| <span class="hljs-comment"># Push with a custom base image</span> | |
| openenv push --base-image ghcr.io/huggingface/openenv-base:latest | |
| <span class="hljs-comment"># Push as a private space</span> | |
| openenv push --private | |
| <span class="hljs-comment"># Combine options</span> | |
| openenv push --repo-id my-org/maze-env --base-image custom-base:latest --private`,lang:"bash",wrap:!1}}),Q=new u({props:{title:"Running the Default Maze",local:"running-the-default-maze",headingTag:"h2"}}),R=new T({props:{code:"ZG9ja2VyJTIwcnVuJTIwLXAlMjA4MDAwJTNBODAwMCUyMG1hemVfZW52LWVudiUzQWxhdGVzdA==",highlighted:"docker run -p 8000:8000 maze_env-env:latest",lang:"bash",wrap:!1}}),Y=new u({props:{title:"Environment Details",local:"environment-details",headingTag:"h2"}}),X=new u({props:{title:"Action",local:"action",headingTag:"h3"}}),q=new u({props:{title:"Observation",local:"observation",headingTag:"h3"}}),ee=new u({props:{title:"State",local:"state",headingTag:"h3"}}),ne=new u({props:{title:"Reward",local:"reward",headingTag:"h3"}}),ae=new u({props:{title:"Configuration",local:"configuration",headingTag:"h2"}}),Me=new u({props:{title:"Environment Variables",local:"environment-variables",headingTag:"h3"}}),oe=new u({props:{title:"Advanced Usage",local:"advanced-usage",headingTag:"h2"}}),me=new u({props:{title:"Connecting to an Existing Server",local:"connecting-to-an-existing-server",headingTag:"h3"}}),ye=new T({props:{code:"ZnJvbSUyMG1hemVfZW52JTIwaW1wb3J0JTIwTWF6ZUFjdGlvbiUyQyUyME1hemVFbnYlMEElMEElMjMlMjBDb25uZWN0JTIwdG8lMjBleGlzdGluZyUyMHNlcnZlciUwQWVudiUyMCUzRCUyME1hemVFbnYoYmFzZV91cmwlM0QlMjJodHRwJTNBJTJGJTJGbG9jYWxob3N0JTNBODAwMCUyMiklMEElMEElMjMlMjBVc2UlMjBhcyUyMG5vcm1hbCUwQXJlc3VsdCUyMCUzRCUyMGVudi5yZXNldCgpJTBBcmVzdWx0JTIwJTNEJTIwZW52LnN0ZXAoTWF6ZUFjdGlvbihhY3Rpb24lM0RyZXN1bHQub2JzZXJ2YXRpb24ubGVnYWxfYWN0aW9ucyU1QjAlNUQpKSUwQSUwQSUyMyUyMENsb3NlJTIwY29ubmVjdGlvbiUyMChkb2VzJTIwTk9UJTIwc3RvcCUyMHRoZSUyMHNlcnZlciklMEFlbnYuY2xvc2UoKQ==",highlighted:`<span class="hljs-keyword">from</span> maze_env <span class="hljs-keyword">import</span> MazeAction, MazeEnv | |
| <span class="hljs-comment"># Connect to existing server</span> | |
| env = MazeEnv(base_url=<span class="hljs-string">"http://localhost:8000"</span>) | |
| <span class="hljs-comment"># Use as normal</span> | |
| result = env.reset() | |
| result = env.step(MazeAction(action=result.observation.legal_actions[<span class="hljs-number">0</span>])) | |
| <span class="hljs-comment"># Close connection (does NOT stop the server)</span> | |
| env.close()`,lang:"python",wrap:!1}}),ce=new u({props:{title:"Connecting to HuggingFace Space",local:"connecting-to-huggingface-space",headingTag:"h3"}}),Ue=new T({props:{code:"ZnJvbSUyMG1hemVfZW52JTIwaW1wb3J0JTIwTWF6ZUFjdGlvbiUyQyUyME1hemVFbnYlMEElMEElMjMlMjBDb25uZWN0JTIwdG8lMjByZW1vdGUlMjBTcGFjZSUwQWVudiUyMCUzRCUyME1hemVFbnYoYmFzZV91cmwlM0QlMjJodHRwcyUzQSUyRiUyRnlvdXItdXNlcm5hbWUtbWF6ZS1lbnYuaGYuc3BhY2UlMjIpJTBBJTBBcmVzdWx0JTIwJTNEJTIwZW52LnJlc2V0KCklMEFwcmludChmJTIyUG9zaXRpb24lM0ElMjAlN0JyZXN1bHQub2JzZXJ2YXRpb24uY3VycmVudF9wb3NpdGlvbiU3RCUyMiklMEFwcmludChmJTIyTGVnYWwlMjBhY3Rpb25zJTNBJTIwJTdCcmVzdWx0Lm9ic2VydmF0aW9uLmxlZ2FsX2FjdGlvbnMlN0QlMjIpJTBBJTBBcmVzdWx0JTIwJTNEJTIwZW52LnN0ZXAoTWF6ZUFjdGlvbihhY3Rpb24lM0RyZXN1bHQub2JzZXJ2YXRpb24ubGVnYWxfYWN0aW9ucyU1QjAlNUQpKSUwQWVudi5jbG9zZSgp",highlighted:`<span class="hljs-keyword">from</span> maze_env <span class="hljs-keyword">import</span> MazeAction, MazeEnv | |
| <span class="hljs-comment"># Connect to remote Space</span> | |
| env = MazeEnv(base_url=<span class="hljs-string">"https://your-username-maze-env.hf.space"</span>) | |
| result = env.reset() | |
| <span class="hljs-built_in">print</span>(<span class="hljs-string">f"Position: <span class="hljs-subst">{result.observation.current_position}</span>"</span>) | |
| <span class="hljs-built_in">print</span>(<span class="hljs-string">f"Legal actions: <span class="hljs-subst">{result.observation.legal_actions}</span>"</span>) | |
| result = env.step(MazeAction(action=result.observation.legal_actions[<span class="hljs-number">0</span>])) | |
| env.close()`,lang:"python",wrap:!1}}),ue=new u({props:{title:"Project Structure",local:"project-structure",headingTag:"h2"}}),we=new T({props:{code:"bWF6ZV9lbnYlMkYlMEElRTIlOTQlOUMlRTIlOTQlODAlRTIlOTQlODAlMjBfX2luaXRfXy5weSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyME1vZHVsZSUyMGV4cG9ydHMlMEElRTIlOTQlOUMlRTIlOTQlODAlRTIlOTQlODAlMjBSRUFETUUubWQlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBUaGlzJTIwZmlsZSUwQSVFMiU5NCU5QyVFMiU5NCU4MCVFMiU5NCU4MCUyMG9wZW5lbnYueWFtbCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyME9wZW5FbnYlMjBtYW5pZmVzdCUwQSVFMiU5NCU5QyVFMiU5NCU4MCVFMiU5NCU4MCUyMHB5cHJvamVjdC50b21sJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwUHJvamVjdCUyMG1ldGFkYXRhJTIwYW5kJTIwZGVwZW5kZW5jaWVzJTBBJUUyJTk0JTlDJUUyJTk0JTgwJUUyJTk0JTgwJTIwY2xpZW50LnB5JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwTWF6ZUVudiUyMGNsaWVudCUyMGltcGxlbWVudGF0aW9uJTBBJUUyJTk0JTlDJUUyJTk0JTgwJUUyJTk0JTgwJTIwbW9kZWxzLnB5JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwQWN0aW9uJTJDJTIwT2JzZXJ2YXRpb24lMkMlMjBhbmQlMjBTdGF0ZSUyMG1vZGVscyUwQSVFMiU5NCU5NCVFMiU5NCU4MCVFMiU5NCU4MCUyMHNlcnZlciUyRiUwQSUyMCUyMCUyMCUyMCVFMiU5NCU5QyVFMiU5NCU4MCVFMiU5NCU4MCUyMF9faW5pdF9fLnB5JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwU2VydmVyJTIwbW9kdWxlJTIwZXhwb3J0cyUwQSUyMCUyMCUyMCUyMCVFMiU5NCU5QyVFMiU5NCU4MCVFMiU5NCU4MCUyMG1hemUucHklMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBNYXplJTIwbG9naWMlMjBhbmQlMjByZXdhcmRzJTBBJTIwJTIwJTIwJTIwJUUyJTk0JTlDJUUyJTk0JTgwJUUyJTk0JTgwJTIwbWF6ZV9lbnZfZW52aXJvbm1lbnQucHklMjAlMjAlMjMlMjBDb3JlJTIwZW52aXJvbm1lbnQlMjBpbXBsZW1lbnRhdGlvbiUwQSUyMCUyMCUyMCUyMCVFMiU5NCU5QyVFMiU5NCU4MCVFMiU5NCU4MCUyMGFwcC5weSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMEZhc3RBUEklMjBhcHBsaWNhdGlvbiUwQSUyMCUyMCUyMCUyMCVFMiU5NCU5NCVFMiU5NCU4MCVFMiU5NCU4MCUyMERvY2tlcmZpbGUlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBFbnZpcm9ubWVudCUyMGNvbnRhaW5lcg==",highlighted:`maze_env/ | |
| ├── __init__.py # Module exports | |
| ├── README.md # This file | |
| ├── openenv.yaml # OpenEnv manifest | |
| ├── pyproject.toml # Project metadata and dependencies | |
| ├── client.py # MazeEnv client <span class="hljs-keyword">implementation</span> | |
| ├── models.py # Action, Observation, and State models | |
| └── server/ | |
| ├── __init__.py # Server <span class="hljs-keyword">module</span> exports | |
| ├── maze.py # Maze logic and rewards | |
| ├── maze_env_environment.py # Core environment <span class="hljs-keyword">implementation</span> | |
| ├── app.py # FastAPI application | |
| └── Dockerfile # Environment container`,lang:"",wrap:!1}}),Te=new u({props:{title:"References",local:"references",headingTag:"h2"}}),Je=new pl({props:{source:"https://github.com/huggingface/openenv/blob/main/docs/source/environments/maze.md"}}),{c(){w=y("meta"),$e=i(),fe=y("p"),ge=i(),a(d.$$.fragment),ve=i(),a(J.$$.fragment),je=i(),f=y("p"),f.textContent=It,be=i(),a(C.$$.fragment),he=i(),$=y("p"),$.textContent=At,Ie=i(),a(g.$$.fragment),Ae=i(),v=y("p"),v.innerHTML=Zt,Ze=i(),a(j.$$.fragment),Ee=i(),b=y("p"),b.innerHTML=Et,Ve=i(),a(h.$$.fragment),We=i(),I=y("p"),I.innerHTML=Vt,ze=i(),A=y("ul"),A.innerHTML=Wt,Be=i(),a(Z.$$.fragment),Ge=i(),E=y("p"),E.innerHTML=zt,Fe=i(),a(V.$$.fragment),xe=i(),a(W.$$.fragment),ke=i(),z=y("p"),z.innerHTML=Bt,Ne=i(),a(B.$$.fragment),He=i(),G=y("p"),G.innerHTML=Gt,Se=i(),F=y("ol"),F.innerHTML=Ft,_e=i(),a(x.$$.fragment),Le=i(),k=y("ul"),k.innerHTML=xt,Qe=i(),a(N.$$.fragment),Re=i(),H=y("ul"),H.innerHTML=kt,Ye=i(),a(S.$$.fragment),Xe=i(),a(_.$$.fragment),De=i(),L=y("p"),L.innerHTML=Nt,Pe=i(),a(Q.$$.fragment),qe=i(),a(R.$$.fragment),Oe=i(),a(Y.$$.fragment),Ke=i(),a(X.$$.fragment),et=i(),D=y("p"),D.innerHTML=Ht,tt=i(),P=y("ul"),P.innerHTML=St,lt=i(),a(q.$$.fragment),nt=i(),O=y("p"),O.innerHTML=_t,it=i(),K=y("ul"),K.innerHTML=Lt,st=i(),a(ee.$$.fragment),at=i(),te=y("p"),te.innerHTML=Qt,Mt=i(),le=y("ul"),le.innerHTML=Rt,pt=i(),a(ne.$$.fragment),ot=i(),ie=y("p"),ie.textContent=Yt,mt=i(),se=y("ul"),se.innerHTML=Xt,rt=i(),a(ae.$$.fragment),yt=i(),a(Me.$$.fragment),ct=i(),pe=y("p"),pe.textContent=Dt,Ut=i(),a(oe.$$.fragment),ut=i(),a(me.$$.fragment),wt=i(),re=y("p"),re.textContent=Pt,Tt=i(),a(ye.$$.fragment),dt=i(),a(ce.$$.fragment),Jt=i(),a(Ue.$$.fragment),ft=i(),a(ue.$$.fragment),Ct=i(),a(we.$$.fragment),$t=i(),a(Te.$$.fragment),gt=i(),de=y("ul"),de.innerHTML=qt,vt=i(),a(Je.$$.fragment),jt=i(),Ce=y("p"),this.h()},l(e){const t=sl("svelte-u9bgzb",document.head);w=c(t,"META",{name:!0,content:!0}),t.forEach(l),$e=s(e),fe=c(e,"P",{}),Ot(fe).forEach(l),ge=s(e),M(d.$$.fragment,e),ve=s(e),M(J.$$.fragment,e),je=s(e),f=c(e,"P",{"data-svelte-h":!0}),U(f)!=="svelte-1w3e1ev"&&(f.textContent=It),be=s(e),M(C.$$.fragment,e),he=s(e),$=c(e,"P",{"data-svelte-h":!0}),U($)!=="svelte-x68ajy"&&($.textContent=At),Ie=s(e),M(g.$$.fragment,e),Ae=s(e),v=c(e,"P",{"data-svelte-h":!0}),U(v)!=="svelte-zyclkc"&&(v.innerHTML=Zt),Ze=s(e),M(j.$$.fragment,e),Ee=s(e),b=c(e,"P",{"data-svelte-h":!0}),U(b)!=="svelte-bx7h8y"&&(b.innerHTML=Et),Ve=s(e),M(h.$$.fragment,e),We=s(e),I=c(e,"P",{"data-svelte-h":!0}),U(I)!=="svelte-152mf6x"&&(I.innerHTML=Vt),ze=s(e),A=c(e,"UL",{"data-svelte-h":!0}),U(A)!=="svelte-18k8876"&&(A.innerHTML=Wt),Be=s(e),M(Z.$$.fragment,e),Ge=s(e),E=c(e,"P",{"data-svelte-h":!0}),U(E)!=="svelte-xvw465"&&(E.innerHTML=zt),Fe=s(e),M(V.$$.fragment,e),xe=s(e),M(W.$$.fragment,e),ke=s(e),z=c(e,"P",{"data-svelte-h":!0}),U(z)!=="svelte-1w0m59y"&&(z.innerHTML=Bt),Ne=s(e),M(B.$$.fragment,e),He=s(e),G=c(e,"P",{"data-svelte-h":!0}),U(G)!=="svelte-10tfdgm"&&(G.innerHTML=Gt),Se=s(e),F=c(e,"OL",{"data-svelte-h":!0}),U(F)!=="svelte-jijyjb"&&(F.innerHTML=Ft),_e=s(e),M(x.$$.fragment,e),Le=s(e),k=c(e,"UL",{"data-svelte-h":!0}),U(k)!=="svelte-348gc7"&&(k.innerHTML=xt),Qe=s(e),M(N.$$.fragment,e),Re=s(e),H=c(e,"UL",{"data-svelte-h":!0}),U(H)!=="svelte-k1u5ib"&&(H.innerHTML=kt),Ye=s(e),M(S.$$.fragment,e),Xe=s(e),M(_.$$.fragment,e),De=s(e),L=c(e,"P",{"data-svelte-h":!0}),U(L)!=="svelte-16csr9h"&&(L.innerHTML=Nt),Pe=s(e),M(Q.$$.fragment,e),qe=s(e),M(R.$$.fragment,e),Oe=s(e),M(Y.$$.fragment,e),Ke=s(e),M(X.$$.fragment,e),et=s(e),D=c(e,"P",{"data-svelte-h":!0}),U(D)!=="svelte-gln3ve"&&(D.innerHTML=Ht),tt=s(e),P=c(e,"UL",{"data-svelte-h":!0}),U(P)!=="svelte-1tna2cf"&&(P.innerHTML=St),lt=s(e),M(q.$$.fragment,e),nt=s(e),O=c(e,"P",{"data-svelte-h":!0}),U(O)!=="svelte-uix4ak"&&(O.innerHTML=_t),it=s(e),K=c(e,"UL",{"data-svelte-h":!0}),U(K)!=="svelte-1sip0q5"&&(K.innerHTML=Lt),st=s(e),M(ee.$$.fragment,e),at=s(e),te=c(e,"P",{"data-svelte-h":!0}),U(te)!=="svelte-14vjtob"&&(te.innerHTML=Qt),Mt=s(e),le=c(e,"UL",{"data-svelte-h":!0}),U(le)!=="svelte-1u7ankm"&&(le.innerHTML=Rt),pt=s(e),M(ne.$$.fragment,e),ot=s(e),ie=c(e,"P",{"data-svelte-h":!0}),U(ie)!=="svelte-1h9zvfc"&&(ie.textContent=Yt),mt=s(e),se=c(e,"UL",{"data-svelte-h":!0}),U(se)!=="svelte-16hxqjh"&&(se.innerHTML=Xt),rt=s(e),M(ae.$$.fragment,e),yt=s(e),M(Me.$$.fragment,e),ct=s(e),pe=c(e,"P",{"data-svelte-h":!0}),U(pe)!=="svelte-11e46oc"&&(pe.textContent=Dt),Ut=s(e),M(oe.$$.fragment,e),ut=s(e),M(me.$$.fragment,e),wt=s(e),re=c(e,"P",{"data-svelte-h":!0}),U(re)!=="svelte-1tcwrqp"&&(re.textContent=Pt),Tt=s(e),M(ye.$$.fragment,e),dt=s(e),M(ce.$$.fragment,e),Jt=s(e),M(Ue.$$.fragment,e),ft=s(e),M(ue.$$.fragment,e),Ct=s(e),M(we.$$.fragment,e),$t=s(e),M(Te.$$.fragment,e),gt=s(e),de=c(e,"UL",{"data-svelte-h":!0}),U(de)!=="svelte-q2i6i2"&&(de.innerHTML=qt),vt=s(e),M(Je.$$.fragment,e),jt=s(e),Ce=c(e,"P",{}),Ot(Ce).forEach(l),this.h()},h(){Kt(w,"name","hf:doc:metadata"),Kt(w,"content",ml)},m(e,t){al(document.head,w),n(e,$e,t),n(e,fe,t),n(e,ge,t),p(d,e,t),n(e,ve,t),p(J,e,t),n(e,je,t),n(e,f,t),n(e,be,t),p(C,e,t),n(e,he,t),n(e,$,t),n(e,Ie,t),p(g,e,t),n(e,Ae,t),n(e,v,t),n(e,Ze,t),p(j,e,t),n(e,Ee,t),n(e,b,t),n(e,Ve,t),p(h,e,t),n(e,We,t),n(e,I,t),n(e,ze,t),n(e,A,t),n(e,Be,t),p(Z,e,t),n(e,Ge,t),n(e,E,t),n(e,Fe,t),p(V,e,t),n(e,xe,t),p(W,e,t),n(e,ke,t),n(e,z,t),n(e,Ne,t),p(B,e,t),n(e,He,t),n(e,G,t),n(e,Se,t),n(e,F,t),n(e,_e,t),p(x,e,t),n(e,Le,t),n(e,k,t),n(e,Qe,t),p(N,e,t),n(e,Re,t),n(e,H,t),n(e,Ye,t),p(S,e,t),n(e,Xe,t),p(_,e,t),n(e,De,t),n(e,L,t),n(e,Pe,t),p(Q,e,t),n(e,qe,t),p(R,e,t),n(e,Oe,t),p(Y,e,t),n(e,Ke,t),p(X,e,t),n(e,et,t),n(e,D,t),n(e,tt,t),n(e,P,t),n(e,lt,t),p(q,e,t),n(e,nt,t),n(e,O,t),n(e,it,t),n(e,K,t),n(e,st,t),p(ee,e,t),n(e,at,t),n(e,te,t),n(e,Mt,t),n(e,le,t),n(e,pt,t),p(ne,e,t),n(e,ot,t),n(e,ie,t),n(e,mt,t),n(e,se,t),n(e,rt,t),p(ae,e,t),n(e,yt,t),p(Me,e,t),n(e,ct,t),n(e,pe,t),n(e,Ut,t),p(oe,e,t),n(e,ut,t),p(me,e,t),n(e,wt,t),n(e,re,t),n(e,Tt,t),p(ye,e,t),n(e,dt,t),p(ce,e,t),n(e,Jt,t),p(Ue,e,t),n(e,ft,t),p(ue,e,t),n(e,Ct,t),p(we,e,t),n(e,$t,t),p(Te,e,t),n(e,gt,t),n(e,de,t),n(e,vt,t),p(Je,e,t),n(e,jt,t),n(e,Ce,t),bt=!0},p:tl,i(e){bt||(o(d.$$.fragment,e),o(J.$$.fragment,e),o(C.$$.fragment,e),o(g.$$.fragment,e),o(j.$$.fragment,e),o(h.$$.fragment,e),o(Z.$$.fragment,e),o(V.$$.fragment,e),o(W.$$.fragment,e),o(B.$$.fragment,e),o(x.$$.fragment,e),o(N.$$.fragment,e),o(S.$$.fragment,e),o(_.$$.fragment,e),o(Q.$$.fragment,e),o(R.$$.fragment,e),o(Y.$$.fragment,e),o(X.$$.fragment,e),o(q.$$.fragment,e),o(ee.$$.fragment,e),o(ne.$$.fragment,e),o(ae.$$.fragment,e),o(Me.$$.fragment,e),o(oe.$$.fragment,e),o(me.$$.fragment,e),o(ye.$$.fragment,e),o(ce.$$.fragment,e),o(Ue.$$.fragment,e),o(ue.$$.fragment,e),o(we.$$.fragment,e),o(Te.$$.fragment,e),o(Je.$$.fragment,e),bt=!0)},o(e){m(d.$$.fragment,e),m(J.$$.fragment,e),m(C.$$.fragment,e),m(g.$$.fragment,e),m(j.$$.fragment,e),m(h.$$.fragment,e),m(Z.$$.fragment,e),m(V.$$.fragment,e),m(W.$$.fragment,e),m(B.$$.fragment,e),m(x.$$.fragment,e),m(N.$$.fragment,e),m(S.$$.fragment,e),m(_.$$.fragment,e),m(Q.$$.fragment,e),m(R.$$.fragment,e),m(Y.$$.fragment,e),m(X.$$.fragment,e),m(q.$$.fragment,e),m(ee.$$.fragment,e),m(ne.$$.fragment,e),m(ae.$$.fragment,e),m(Me.$$.fragment,e),m(oe.$$.fragment,e),m(me.$$.fragment,e),m(ye.$$.fragment,e),m(ce.$$.fragment,e),m(Ue.$$.fragment,e),m(ue.$$.fragment,e),m(we.$$.fragment,e),m(Te.$$.fragment,e),m(Je.$$.fragment,e),bt=!1},d(e){e&&(l($e),l(fe),l(ge),l(ve),l(je),l(f),l(be),l(he),l($),l(Ie),l(Ae),l(v),l(Ze),l(Ee),l(b),l(Ve),l(We),l(I),l(ze),l(A),l(Be),l(Ge),l(E),l(Fe),l(xe),l(ke),l(z),l(Ne),l(He),l(G),l(Se),l(F),l(_e),l(Le),l(k),l(Qe),l(Re),l(H),l(Ye),l(Xe),l(De),l(L),l(Pe),l(qe),l(Oe),l(Ke),l(et),l(D),l(tt),l(P),l(lt),l(nt),l(O),l(it),l(K),l(st),l(at),l(te),l(Mt),l(le),l(pt),l(ot),l(ie),l(mt),l(se),l(rt),l(yt),l(ct),l(pe),l(Ut),l(ut),l(wt),l(re),l(Tt),l(dt),l(Jt),l(ft),l(Ct),l($t),l(gt),l(de),l(vt),l(jt),l(Ce)),l(w),r(d,e),r(J,e),r(C,e),r(g,e),r(j,e),r(h,e),r(Z,e),r(V,e),r(W,e),r(B,e),r(x,e),r(N,e),r(S,e),r(_,e),r(Q,e),r(R,e),r(Y,e),r(X,e),r(q,e),r(ee,e),r(ne,e),r(ae,e),r(Me,e),r(oe,e),r(me,e),r(ye,e),r(ce,e),r(Ue,e),r(ue,e),r(we,e),r(Te,e),r(Je,e)}}}const ml='{"title":"Maze Environment","local":"maze-environment","sections":[{"title":"Maze Layout","local":"maze-layout","sections":[],"depth":2},{"title":"Quick Start","local":"quick-start","sections":[],"depth":2},{"title":"Building the Docker Image","local":"building-the-docker-image","sections":[],"depth":2},{"title":"Deploying to Hugging Face Spaces","local":"deploying-to-hugging-face-spaces","sections":[{"title":"Prerequisites","local":"prerequisites","sections":[],"depth":3},{"title":"Options","local":"options","sections":[],"depth":3},{"title":"Examples","local":"examples","sections":[],"depth":3}],"depth":2},{"title":"Running the Default Maze","local":"running-the-default-maze","sections":[],"depth":2},{"title":"Environment Details","local":"environment-details","sections":[{"title":"Action","local":"action","sections":[],"depth":3},{"title":"Observation","local":"observation","sections":[],"depth":3},{"title":"State","local":"state","sections":[],"depth":3},{"title":"Reward","local":"reward","sections":[],"depth":3}],"depth":2},{"title":"Configuration","local":"configuration","sections":[{"title":"Environment Variables","local":"environment-variables","sections":[],"depth":3}],"depth":2},{"title":"Advanced Usage","local":"advanced-usage","sections":[{"title":"Connecting to an Existing Server","local":"connecting-to-an-existing-server","sections":[],"depth":3},{"title":"Connecting to HuggingFace Space","local":"connecting-to-huggingface-space","sections":[],"depth":3}],"depth":2},{"title":"Project Structure","local":"project-structure","sections":[],"depth":2},{"title":"References","local":"references","sections":[],"depth":2}],"depth":1}';function rl(ht){return ll(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class wl extends nl{constructor(w){super(),il(this,w,rl,ol,el,{})}}export{wl as component}; | |
Xet Storage Details
- Size:
- 27.3 kB
- Xet hash:
- b5a37c466777e4ddbdb65c4c718d0fca7d8ee70ea05e0e05936361295e318e11
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.