src/domain/local-n8n-assistant.js
Rama main · réplica de lectura del repositorio original.
import { validateLocalDockerHost } from "../infrastructure/local-process.js";
import { validateAssistantSearxngSelection } from "./assistant.js";
import { validateDockerObjectId } from "./local-n8n-sidecar.js";
import { validateDockerName } from "./validation.js";
export const LOCAL_N8N_ASSISTANT_TARGET = "n8n-ai-assistant";
export function createLocalN8nAssistantPlan({
dockerHost,
n8nContainerId,
n8nContainerName,
dockerNetworkId,
networkName,
includeSearxng,
}) {
return {
kind: "n8n-assistant",
target: LOCAL_N8N_ASSISTANT_TARGET,
label: "n8n AI Assistant tools",
protocol: "n8n-instance-ai-companion",
dockerHost: validateLocalDockerHost(dockerHost),
n8nContainerId: validateDockerObjectId(
n8nContainerId,
"n8n container",
),
n8nContainerName: validateDockerName(n8nContainerName),
dockerNetworkId: validateDockerObjectId(
dockerNetworkId,
"Docker network",
),
networkName: validateDockerName(networkName),
includeSearxng: validateAssistantSearxngSelection(includeSearxng),
codeSandbox: true,
privilegedRunner: true,
hostPublication: "none",
managedPath: "~/.relmio/local/n8n-ai-assistant",
n8nConfigurationRequired: true,
};
}
export function normalizeLocalN8nAssistantPlan(value) {
if (!value || typeof value !== "object" || Array.isArray(value)) {
throw new TypeError("The local n8n Assistant plan is invalid.");
}
const normalized = createLocalN8nAssistantPlan({
dockerHost: value.dockerHost,
n8nContainerId: value.n8nContainerId,
n8nContainerName: value.n8nContainerName,
dockerNetworkId: value.dockerNetworkId,
networkName: value.networkName,
includeSearxng: value.includeSearxng,
});
for (const [name, expected] of Object.entries(normalized)) {
if (value[name] !== expected) {
throw new TypeError("The local n8n Assistant plan is invalid.");
}
}
return normalized;
}