openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
79 lines (78 loc) • 3.06 kB
JavaScript
import { p as readStringValue } from "./string-coerce-mnp54Vah.js";
import { t as isTruthyEnvValue } from "./env-Di49gJwo.js";
import { c as isRecord } from "./utils-CCC-BEJH.js";
import { c as resolveEffectiveEnableState, s as normalizePluginsConfig } from "./config-state-CikNNz7T.js";
import { t as asBoolean } from "./boolean-By0bZpFH.js";
import "./runtime-env-D_2q8-VK.js";
import "./string-coerce-runtime-CEGJWkQ_.js";
import { r as resolvePluginConfigObject } from "./plugin-config-runtime-CpE6DYgJ.js";
//#region extensions/canvas/src/config.ts
function readPositiveInteger(value) {
return typeof value === "number" && Number.isInteger(value) && value > 0 ? value : void 0;
}
function parseCanvasHostConfig(value) {
if (!isRecord(value)) return;
return {
...asBoolean(value.enabled) !== void 0 ? { enabled: asBoolean(value.enabled) } : {},
...readStringValue(value.root) !== void 0 ? { root: readStringValue(value.root) } : {},
...readPositiveInteger(value.port) !== void 0 ? { port: readPositiveInteger(value.port) } : {},
...asBoolean(value.liveReload) !== void 0 ? { liveReload: asBoolean(value.liveReload) } : {}
};
}
/** Parses raw Canvas plugin config into a typed, normalized shape. */
function parseCanvasPluginConfig(value) {
if (!isRecord(value)) return {};
const host = parseCanvasHostConfig(value.host);
return host ? { host } : {};
}
/** Returns whether the bundled Canvas plugin is effectively enabled. */
function isCanvasPluginEnabled(config) {
if (!config) return true;
return resolveEffectiveEnableState({
id: "canvas",
origin: "bundled",
config: normalizePluginsConfig(config.plugins),
rootConfig: config,
enabledByDefault: true
}).enabled;
}
/** Resolves Canvas host config from plugin config or root config. */
function resolveCanvasHostConfig(params) {
return parseCanvasPluginConfig(params.pluginConfig ?? resolvePluginConfigObject(params.config, "canvas") ?? {}).host ?? {};
}
/** Returns whether the Canvas hosted route/server surface should be active. */
function isCanvasHostEnabled(config) {
if (isTruthyEnvValue(process.env.OPENCLAW_SKIP_CANVAS_HOST)) return false;
if (!isCanvasPluginEnabled(config)) return false;
return resolveCanvasHostConfig({ config }).enabled !== false;
}
/** Config schema metadata for Canvas plugin settings. */
const canvasConfigSchema = {
parse: parseCanvasPluginConfig,
uiHints: {
host: {
label: "Canvas Host",
help: "Serves local Canvas and A2UI files for paired nodes.",
advanced: true
},
"host.enabled": {
label: "Canvas Host Enabled",
advanced: true
},
"host.root": {
label: "Canvas Host Root Directory",
help: "Directory to serve. Defaults to the OpenClaw state canvas directory.",
advanced: true
},
"host.port": {
label: "Canvas Host Port",
advanced: true
},
"host.liveReload": {
label: "Canvas Host Live Reload",
advanced: true
}
}
};
//#endregion
export { resolveCanvasHostConfig as a, parseCanvasPluginConfig as i, isCanvasHostEnabled as n, isCanvasPluginEnabled as r, canvasConfigSchema as t };