mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-08 11:13:44 +02:00
fix(runner): load live console helpers from owning modules
Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
1 parent
792ae6082e
commit
28c82b358e
2 files changed
+46
-4
No files matched your search
@@ -11,8 +11,22 @@ import { resolve } from "node:path";
|
||||
* `PAPERCLIP_LIVE_CONSOLE_DRIVER=codex` swaps in the real Codex app-server driver
|
||||
* behind exactly the same routes.
|
||||
*/
|
||||
async function loadRunner() {
|
||||
return import(new URL("../dist/index.js", import.meta.url).href);
|
||||
export async function loadLiveConsoleRunner(loadModule = (url) => import(url)) {
|
||||
// Demo helpers are intentionally absent from the public runtime entrypoint.
|
||||
// Load their owning modules, as the local-runner devtool transport does.
|
||||
const [server, manifests, scripted, codex] = await Promise.all([
|
||||
"../dist/mock-core/live-console-demo-server.js",
|
||||
"../dist/mock-core/live-console-demo-manifests.js",
|
||||
"../dist/mock-core/live-console-scripted-driver.js",
|
||||
"../dist/drivers/codex/codex-app-server-driver.js",
|
||||
].map((path) => loadModule(new URL(path, import.meta.url).href)));
|
||||
return {
|
||||
assertLiveConsoleLoopbackBindHost: server.assertLiveConsoleLoopbackBindHost,
|
||||
LiveConsoleDemoServer: server.LiveConsoleDemoServer,
|
||||
liveConsoleDemoManifestCatalogue: manifests.liveConsoleDemoManifestCatalogue,
|
||||
LiveConsoleScriptedDriver: scripted.LiveConsoleScriptedDriver,
|
||||
CodexAppServerDriver: codex.CodexAppServerDriver,
|
||||
};
|
||||
}
|
||||
|
||||
async function createWorkingDirectory() {
|
||||
@@ -22,7 +36,7 @@ async function createWorkingDirectory() {
|
||||
}
|
||||
|
||||
export function createLiveConsoleBrowserMiddleware(options = {}) {
|
||||
const load = options.loadRunner ?? loadRunner;
|
||||
const load = options.loadRunner ?? loadLiveConsoleRunner;
|
||||
const driverMode = options.driverMode ?? process.env.PAPERCLIP_LIVE_CONSOLE_DRIVER ?? "demo";
|
||||
const chunkDelayMs = Number.parseInt(
|
||||
options.chunkDelayMs ?? process.env.PAPERCLIP_LIVE_CONSOLE_CHUNK_DELAY_MS ?? "45",
|
||||
|
||||
@@ -1,8 +1,36 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
|
||||
import { createLiveConsoleBrowserMiddleware } from "./live-console-browser-server.mjs";
|
||||
import { createLiveConsoleBrowserMiddleware, loadLiveConsoleRunner } from "./live-console-browser-server.mjs";
|
||||
|
||||
describe("Live console Vite transport bootstrap", () => {
|
||||
it("loads the demo helpers from their owning modules instead of the public barrel", async () => {
|
||||
const paths = [];
|
||||
const runner = await loadLiveConsoleRunner(async (url) => {
|
||||
const path = new URL(url).pathname;
|
||||
paths.push(path.slice(path.lastIndexOf("/dist/") + 6));
|
||||
// Exercise real exports without requiring generated dist in unit tests.
|
||||
return import(url.replace("/dist/", "/src/").replace(/\.js$/, ".ts"));
|
||||
});
|
||||
expect(paths).toEqual([
|
||||
"mock-core/live-console-demo-server.js",
|
||||
"mock-core/live-console-demo-manifests.js",
|
||||
"mock-core/live-console-scripted-driver.js",
|
||||
"drivers/codex/codex-app-server-driver.js",
|
||||
]);
|
||||
expect(runner.assertLiveConsoleLoopbackBindHost).toBeTypeOf("function");
|
||||
expect(runner.LiveConsoleDemoServer).toBeTypeOf("function");
|
||||
expect(runner.LiveConsoleScriptedDriver).toBeTypeOf("function");
|
||||
expect(runner.CodexAppServerDriver).toBeTypeOf("function");
|
||||
expect(runner.liveConsoleDemoManifestCatalogue().length).toBeGreaterThan(0);
|
||||
expect(() => runner.assertLiveConsoleLoopbackBindHost("0.0.0.0")).toThrow();
|
||||
const middleware = createLiveConsoleBrowserMiddleware({
|
||||
workingDirectory: "/server-owned-workspace",
|
||||
loadRunner: async () => runner,
|
||||
});
|
||||
await middleware.prepare("127.0.0.1");
|
||||
await middleware.close();
|
||||
});
|
||||
|
||||
it("uses the runner's shared bind guard before constructing middleware", async () => {
|
||||
const calls = [];
|
||||
const middleware = createLiveConsoleBrowserMiddleware({
|
||||
|
||||
Reference in new issue
Block a user