Files
2026-07-31 13:12:54 -04:00

77 lines
2.3 KiB
JavaScript

import path from 'node:path';
function resolveWorkspaceRoot() {
const fromEnv = process.env.WORKSPACE_ROOT;
const raw = fromEnv && fromEnv.trim().length > 0 ? fromEnv : process.cwd();
return path.resolve(raw);
}
export const config = {
/** Absolute path every tool call is confined to. */
workspaceRoot: resolveWorkspaceRoot(),
/** HTTP transport settings (only used by transports/http.ts). */
httpHost: process.env.MCP_HTTP_HOST ?? '127.0.0.1',
httpPort: Number.parseInt(process.env.MCP_HTTP_PORT ?? '3939', 10),
httpToken: process.env.MCP_HTTP_TOKEN,
/** Binaries the server is ever allowed to spawn. Basenames only (extension-insensitive). */
allowedBinaries: [
'npm',
'pnpm',
'yarn',
'bun',
'node',
'npx',
'git',
'php',
'composer',
'powershell',
'sh',
'bash',
// Composer vendor/bin tools invoked by the Laravel/CodeIgniter adapters.
// These are only ever resolved to a path inside the detected project's
// own vendor/bin directory (see PhpFrameworkAdapter.vendorBin), never
// taken verbatim from tool-call input.
'phpunit',
'pest',
'pint',
'phpcs',
'phpcbf',
// Docker CLI used by docker_compose_up/down.
'docker',
// Lighthouse CLI used by lighthouse_audit (also invokable via npx).
'lighthouse',
// v1.4 adapters: Django / Rails tooling.
'python',
'pip',
'poetry',
'uv',
'ruby',
'bundle',
'rails',
'gem',
],
/** Hard caps to keep tool output/process usage bounded. */
maxBufferedLogLines: 2000,
maxToolOutputChars: 20_000,
defaultCommandTimeoutMs: 120_000,
scaffoldCommandTimeoutMs: 5 * 60_000,
defaultReadyTimeoutMs: 30_000,
maxConcurrentProcesses: 10,
/** Docker-specific guardrails. */
dockerAllowedBaseImages: [
'node',
'nginx',
'postgres',
'redis',
'mysql',
'mariadb',
'mongo',
'php',
'composer',
'python',
'alpine',
'busybox',
],
maxConcurrentContainers: 10,
defaultContainerMemory: '512m',
defaultContainerCpus: '1.0',
};
//# sourceMappingURL=config.js.map