You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Decouple remoteExecution runner plugin from py-slang's EV3Engine #151
src/runner/remoteExecution/index.ts (remoteRunnerPlugin) does two unrelated things:
Forwards data over a conductor channel (transport).
Constructs and runs py-slang's EV3Engine and handles the {type: 'run'} / {type: 'result'} protocol (execution).
Consequences:
The package cannot be used without py-slang installed, so it is not the generic, reusable runner-side plugin it claims to be.
It depends on a personal fork branch: github:proto-aiken-13/py-slang#branch-ev3-engine.
It imports its message types (PySlangMessage, CHANNEL_ID, RUNNER_ID) from @sourceacademy/common-test, which looks like test scaffolding.
Proposal
Narrow the plugin to transport only, following the shape of CseMachinePlugin (pure channel forwarding, with the evaluator deciding when and what to send):
Remove the EV3Engine import and all code-execution handling from this package.
Move the run / result protocol to the evaluator side (py-slang), which owns EV3Engine.
Expose a small send API on the plugin (e.g. sendConnectionStatus(status), mirroring CseMachinePlugin.sendSnapshots).
Drop the py-slang dependency, and the worker-bundle rollup target if nothing else needs it.
Add a changeset, since this renames/changes the public API.
Notes
EV3 is currently working for the course, so this is a cleanup, not a blocker. Any change must keep that flow working, so the py-slang side should land first or together.
Activity