diff --git a/extensions/acpx/src/service.test.ts b/extensions/acpx/src/service.test.ts index 0a537516d73..542ffdda7e9 100644 --- a/extensions/acpx/src/service.test.ts +++ b/extensions/acpx/src/service.test.ts @@ -37,6 +37,7 @@ async function makeTempDir(): Promise { afterEach(async () => { runtimeRegistry.clear(); + delete process.env.OPENCLAW_SKIP_ACPX_RUNTIME; delete process.env.OPENCLAW_SKIP_ACPX_RUNTIME_PROBE; for (const dir of tempDirs.splice(0)) { await fs.rm(dir, { recursive: true, force: true }); @@ -167,4 +168,24 @@ describe("createAcpxRuntimeService", () => { await service.stop?.(ctx); }); + + it("can skip the embedded runtime backend via env", async () => { + process.env.OPENCLAW_SKIP_ACPX_RUNTIME = "1"; + const workspaceDir = await makeTempDir(); + const ctx = createServiceContext(workspaceDir); + const runtimeFactory = vi.fn(() => { + throw new Error("runtime factory should not run when ACPX is skipped"); + }); + const service = createAcpxRuntimeService({ + runtimeFactory: runtimeFactory as never, + }); + + await service.start(ctx); + + expect(runtimeFactory).not.toHaveBeenCalled(); + expect(getAcpRuntimeBackend("acpx")).toBeUndefined(); + expect(ctx.logger.info).toHaveBeenCalledWith( + "skipping embedded acpx runtime backend (OPENCLAW_SKIP_ACPX_RUNTIME=1)", + ); + }); }); diff --git a/extensions/acpx/src/service.ts b/extensions/acpx/src/service.ts index ee59b46b676..48a76ff2fca 100644 --- a/extensions/acpx/src/service.ts +++ b/extensions/acpx/src/service.ts @@ -90,6 +90,11 @@ export function createAcpxRuntimeService( return { id: "acpx-runtime", async start(ctx: OpenClawPluginServiceContext): Promise { + if (process.env.OPENCLAW_SKIP_ACPX_RUNTIME === "1") { + ctx.logger.info("skipping embedded acpx runtime backend (OPENCLAW_SKIP_ACPX_RUNTIME=1)"); + return; + } + const pluginConfig = resolveAcpxPluginConfig({ rawConfig: params.pluginConfig, workspaceDir: ctx.workspaceDir, diff --git a/scripts/check-gateway-watch-regression.mjs b/scripts/check-gateway-watch-regression.mjs index eec3bf9efb8..7f8a7a4c88d 100644 --- a/scripts/check-gateway-watch-regression.mjs +++ b/scripts/check-gateway-watch-regression.mjs @@ -23,6 +23,7 @@ const DEFAULTS = { const WATCH_GATEWAY_SKIP_ENV = { OPENCLAW_DISABLE_BONJOUR: "1", + OPENCLAW_SKIP_ACPX_RUNTIME: "1", OPENCLAW_SKIP_ACPX_RUNTIME_PROBE: "1", OPENCLAW_SKIP_BROWSER_CONTROL_SERVER: "1", OPENCLAW_SKIP_CANVAS_HOST: "1",