diff --git a/src/config/types.gateway.ts b/src/config/types.gateway.ts index a0d562f7b..a8ff28534 100644 --- a/src/config/types.gateway.ts +++ b/src/config/types.gateway.ts @@ -36,7 +36,7 @@ export type DiscoveryConfig = { export type CanvasHostConfig = { enabled?: boolean; - /** Directory to serve (default: ~/clawd/canvas). */ + /** Directory to serve (default: /canvas, e.g. ~/clawd/canvas). */ root?: string; /** HTTP port to listen on (default: 18793). */ port?: number; diff --git a/src/gateway/server-runtime-state.ts b/src/gateway/server-runtime-state.ts index 02b060a3b..a5355389d 100644 --- a/src/gateway/server-runtime-state.ts +++ b/src/gateway/server-runtime-state.ts @@ -1,4 +1,5 @@ import type { Server as HttpServer } from "node:http"; +import path from "node:path"; import { WebSocketServer } from "ws"; import { CANVAS_HOST_PATH } from "../canvas-host/a2ui.js"; import { type CanvasHostHandler, createCanvasHostHandler } from "../canvas-host/server.js"; @@ -37,6 +38,7 @@ export async function createGatewayRuntimeState(params: { deps: CliDeps; canvasRuntime: RuntimeEnv; canvasHostEnabled: boolean; + defaultWorkspaceDir: string; allowCanvasHostInTests?: boolean; logCanvas: { info: (msg: string) => void; warn: (msg: string) => void }; log: { info: (msg: string) => void; warn: (msg: string) => void }; @@ -75,7 +77,7 @@ export async function createGatewayRuntimeState(params: { try { const handler = await createCanvasHostHandler({ runtime: params.canvasRuntime, - rootDir: params.cfg.canvasHost?.root, + rootDir: params.cfg.canvasHost?.root ?? path.join(params.defaultWorkspaceDir, "canvas"), basePath: CANVAS_HOST_PATH, allowInTests: params.allowCanvasHostInTests, liveReload: params.cfg.canvasHost?.liveReload, diff --git a/src/gateway/server.impl.ts b/src/gateway/server.impl.ts index f641c4076..ad2d7fd96 100644 --- a/src/gateway/server.impl.ts +++ b/src/gateway/server.impl.ts @@ -301,6 +301,7 @@ export async function startGatewayServer( deps, canvasRuntime, canvasHostEnabled, + defaultWorkspaceDir, allowCanvasHostInTests: opts.allowCanvasHostInTests, logCanvas, log,