{"id":31221114,"url":"https://github.com/source-academy/conductor-runner-example","last_synced_at":"2026-03-07T18:31:31.204Z","repository":{"id":276743892,"uuid":"930122832","full_name":"source-academy/conductor-runner-example","owner":"source-academy","description":null,"archived":false,"fork":false,"pushed_at":"2025-09-19T17:04:21.000Z","size":46,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-19T19:48:59.384Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/source-academy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-02-10T05:29:01.000Z","updated_at":"2025-09-19T17:04:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"61179529-8aff-49e1-ac87-ecde51a799db","html_url":"https://github.com/source-academy/conductor-runner-example","commit_stats":null,"previous_names":["tsammeow/conductor-runner-example","source-academy/conductor-runner-example"],"tags_count":2,"template":true,"template_full_name":null,"purl":"pkg:github/source-academy/conductor-runner-example","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/source-academy%2Fconductor-runner-example","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/source-academy%2Fconductor-runner-example/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/source-academy%2Fconductor-runner-example/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/source-academy%2Fconductor-runner-example/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/source-academy","download_url":"https://codeload.github.com/source-academy/conductor-runner-example/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/source-academy%2Fconductor-runner-example/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30226246,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T18:12:09.766Z","status":"ssl_error","status_checked_at":"2026-03-07T18:11:58.786Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-09-21T19:50:22.676Z","updated_at":"2026-03-07T18:31:31.173Z","avatar_url":"https://github.com/source-academy.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# conductor-runner-example\n\nAn example of how to use the Conductor framework to create a runner that will run on Source Academy.\n\n## Using this repository\n\nThis repository is a *template*. To use, click the \"Use this template\" button,\nand create a new repository for yourself - don't clone or fork this repository.\n\nHowever, if you wish to propose changes to this repository, then *do* clone or fork it - \ndon't create a new repository based on this template.\n\n## Implementing a new language\n\nSee `src/MyEvaluator.ts`. The user's code is received in the argument to `evaluateChunk`.\nIt is important to mark this function `async` to block receiving more chunks while still evaluating the current one,\nespecially when `await`ing Conductor functions or other asynchronous code.\nAlternatively, if you would like to allow more chunks to be received, remove the `async` keyword.\nYou may need to write a separate `async` function to use the `await` keyword, and call it in `evaluateChunk`\nwithout awaiting (do not return your separate function's Promise in `evaluateChunk`,\nor the receiving of more chunks will be blocked!).\n\nInteraction with the Source Academy frontend can be done through the `conductor` property.\nFor example, `conductor.sendOutput(str)` shows `str` on the REPL.\n\n## Testing your new language\n\nRun `yarn start`. This starts a development server and compiles your evaluator in watch mode\n(recompiling on any changes).\n\nYour evaluator will be available at [`http://localhost:8123/index.js`](http://localhost:8123/index.js).\n\n## Making your language available to run\n\nRun `yarn build`. If there are no problems, a file `dist/index.js` will be generated.\nThis is the file that will be used to run your implementation of the language.\n\nThis repository has been configured to automatically build your runner and deploy it to GitHub Pages\nupon pushing to the `main` branch on GitHub.\nYou should be able to find it at `https://{your-username}.github.io/{your-repository}/index.js`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsource-academy%2Fconductor-runner-example","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsource-academy%2Fconductor-runner-example","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsource-academy%2Fconductor-runner-example/lists"}