feat(coding-agent/eval): added local python-runner subprocess execution

- Replaced Python execution with a local `python -u runner.py` subprocess and NDJSON stdin/stdout framing.
- Removed shared-gateway architecture, including coordinator lifecycle APIs, `useSharedGateway` wiring, and `jupyter` CLI/actions.
- Simplified setup checks to a plain Python 3 availability probe and removed automatic dependency-install fallbacks.
- Updated kernel cancellation and display processing to use status frames, SIGINT/SIGTERM escalation, and normalized output coercion.
- Added `python-runner` integration and display tests while deleting legacy websocket and kernel lifecycle test suites.
This commit is contained in:
can1357
2026-05-12 09:09:24 +02:00
parent dcf3f1c8a3
commit 8d144e17ec
26 changed files with 1735 additions and 3004 deletions
@@ -14,7 +14,6 @@ import { formatDuration, Snowflake, setProjectDir } from "@oh-my-pi/pi-utils";
import { $ } from "bun";
import { reset as resetCapabilities } from "../../capability";
import { clearClaudePluginRootsCache } from "../../discovery/helpers";
import { getGatewayStatus } from "../../eval/py/gateway-coordinator";
import { loadCustomShare } from "../../export/custom-share";
import type { CompactOptions } from "../../extensibility/extensions/types";
import {
@@ -402,28 +401,6 @@ export class CommandController {
}
}
const gateway = await getGatewayStatus();
info += `\n${theme.bold("Python Gateway")}\n`;
if (gateway.active) {
info += `${theme.fg("dim", "Status:")} ${theme.fg("success", "Active (Global)")}\n`;
info += `${theme.fg("dim", "URL:")} ${gateway.url}\n`;
info += `${theme.fg("dim", "PID:")} ${gateway.pid}\n`;
if (gateway.pythonPath) {
info += `${theme.fg("dim", "Python:")} ${gateway.pythonPath}\n`;
}
if (gateway.venvPath) {
info += `${theme.fg("dim", "Venv:")} ${gateway.venvPath}\n`;
}
if (gateway.uptime !== null) {
const uptimeSec = Math.floor(gateway.uptime / 1000);
const mins = Math.floor(uptimeSec / 60);
const secs = uptimeSec % 60;
info += `${theme.fg("dim", "Uptime:")} ${mins}m ${secs}s\n`;
}
} else {
info += `${theme.fg("dim", "Status:")} ${theme.fg("dim", "Inactive")}\n`;
}
if (this.ctx.lspServers && this.ctx.lspServers.length > 0) {
info += `\n${theme.bold("LSP Servers")}\n`;
for (const server of this.ctx.lspServers) {