hataraku
Version:
An autonomous coding agent for building AI-powered development tools. The name "Hataraku" (働く) means "to work" in Japanese.
72 lines • 2.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.McpConfigSchema = exports.McpServerConfigSchema = void 0;
exports.interpolateEnvVars = interpolateEnvVars;
exports.isMcpConfig = isMcpConfig;
exports.parseMcpConfig = parseMcpConfig;
const zod_1 = require("zod");
/**
* Interpolate environment variables in a string
* Supports ${VAR_NAME} syntax
*/
function interpolateEnvVars(value) {
return value.replace(/\${([^}]+)}/g, (_, varName) => {
const envValue = process.env[varName];
if (envValue === undefined) {
throw new Error(`Environment variable ${varName} is not set`);
}
return envValue;
});
}
/**
* Transform a string by interpolating environment variables
*/
const envString = zod_1.z.string().transform((str) => interpolateEnvVars(str));
/**
* Transform an array of strings by interpolating environment variables
*/
const envStringArray = zod_1.z.array(envString);
/**
* Transform a record of strings by interpolating environment variables
*/
const envStringRecord = zod_1.z.record(envString);
/**
* Zod schema for validating MCP server configuration
*/
exports.McpServerConfigSchema = zod_1.z.object({
command: envString,
args: envStringArray.optional(),
env: envStringRecord.optional(),
disabledTools: zod_1.z.array(zod_1.z.string()).optional(),
}).strict().transform((data) => ({
command: data.command,
args: data.args || [],
env: data.env,
disabledTools: data.disabledTools
}));
/**
* Zod schema for validating complete MCP configuration
*/
exports.McpConfigSchema = zod_1.z.object({
mcpServers: zod_1.z.record(exports.McpServerConfigSchema),
}).strict().transform((data) => ({
mcpServers: data.mcpServers
}));
/**
* Type guard to check if a value is a valid MCP configuration
*/
function isMcpConfig(value) {
return exports.McpConfigSchema.safeParse(value).success;
}
/**
* Parse and validate MCP configuration, interpolating environment variables
* @throws {Error} if validation fails or required environment variables are missing
*/
function parseMcpConfig(value) {
const result = exports.McpConfigSchema.safeParse(value);
if (!result.success) {
throw new Error(`Invalid MCP configuration: ${result.error.message}`);
}
return result.data;
}
//# sourceMappingURL=config.js.map