n8n/packages/@n8n/instance-ai/src/workspace/n8n-sandbox-image-manager.ts
oleg 629826ca1d
Some checks are pending
Build: Benchmark Image / build (push) Waiting to run
CI: Master (Build, Test, Lint) / Build for Github Cache (push) Waiting to run
CI: Master (Build, Test, Lint) / Unit tests (22.x) (push) Waiting to run
CI: Master (Build, Test, Lint) / Unit tests (24.14.1) (push) Waiting to run
CI: Master (Build, Test, Lint) / Unit tests (25.x) (push) Waiting to run
CI: Master (Build, Test, Lint) / Lint (push) Waiting to run
CI: Master (Build, Test, Lint) / Performance (push) Waiting to run
CI: Master (Build, Test, Lint) / Notify Slack on failure (push) Blocked by required conditions
Util: Sync API Docs / sync-public-api (push) Waiting to run
feat: Instance AI and local gateway modules (no-changelog) (#27206)
Signed-off-by: Oleg Ivaniv <me@olegivaniv.com>
Co-authored-by: Albert Alises <albert.alises@gmail.com>
Co-authored-by: Jaakko Husso <jaakko@n8n.io>
Co-authored-by: Dimitri Lavrenük <20122620+dlavrenuek@users.noreply.github.com>
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
Co-authored-by: Tuukka Kantola <Tuukkaa@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Mutasem Aldmour <4711238+mutdmour@users.noreply.github.com>
Co-authored-by: Raúl Gómez Morales <raul00gm@gmail.com>
Co-authored-by: Elias Meire <elias@meire.dev>
Co-authored-by: Dimitri Lavrenük <dimitri.lavrenuek@n8n.io>
Co-authored-by: Tomi Turtiainen <10324676+tomi@users.noreply.github.com>
Co-authored-by: Mutasem Aldmour <mutasem@n8n.io>
2026-04-01 21:33:38 +03:00

31 lines
953 B
TypeScript

import { DockerfileStepsBuilder } from './n8n-sandbox-client';
import {
BUILD_MJS,
N8N_SANDBOX_WORKSPACE_ROOT,
PACKAGE_JSON,
TSCONFIG_JSON,
} from './sandbox-setup';
function b64(content: string): string {
return Buffer.from(content, 'utf-8').toString('base64');
}
const ROOT = N8N_SANDBOX_WORKSPACE_ROOT;
export class N8nSandboxImageManager {
private cachedDockerfile: DockerfileStepsBuilder | null = null;
getDockerfile(): DockerfileStepsBuilder {
if (this.cachedDockerfile) return this.cachedDockerfile;
this.cachedDockerfile = new DockerfileStepsBuilder()
.run(`mkdir -p ${ROOT}/src ${ROOT}/chunks ${ROOT}/node-types`)
.run(`echo '${b64(PACKAGE_JSON)}' | base64 -d > ${ROOT}/package.json`)
.run(`echo '${b64(TSCONFIG_JSON)}' | base64 -d > ${ROOT}/tsconfig.json`)
.run(`echo '${b64(BUILD_MJS)}' | base64 -d > ${ROOT}/build.mjs`)
.run(`cd ${ROOT} && npm install --ignore-scripts`);
return this.cachedDockerfile;
}
}