File size: 1,281 Bytes
f0634fb | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | import { z } from 'zod';
import { type EnvBindings, envBindings, stripEnvBoundFields } from '#/app/config/config';
import { registerConfigSection } from '#/app/config/configSectionContributions';
import { MAX_MCP_TIMEOUT_MS, McpTimeoutMsSchema } from '#/mcpCore/config-schema';
export const MCP_SECTION = 'mcp';
export const McpSectionSchema = z.object({
startupTimeoutMs: McpTimeoutMsSchema.optional(),
toolTimeoutMs: McpTimeoutMsSchema.optional(),
});
export type McpSection = z.infer<typeof McpSectionSchema>;
export const MCP_STARTUP_TIMEOUT_ENV = 'KIMI_MCP_STARTUP_TIMEOUT_MS';
export const MCP_TOOL_TIMEOUT_ENV = 'KIMI_MCP_TOOL_TIMEOUT_MS';
function parseTimeoutMsEnv(raw: string): number | undefined {
const parsed = Number(raw);
return Number.isInteger(parsed) && parsed >= 1 && parsed <= MAX_MCP_TIMEOUT_MS
? parsed
: undefined;
}
export const mcpEnvBindings: EnvBindings<McpSection> = envBindings(McpSectionSchema, {
startupTimeoutMs: { env: MCP_STARTUP_TIMEOUT_ENV, parse: parseTimeoutMsEnv },
toolTimeoutMs: { env: MCP_TOOL_TIMEOUT_ENV, parse: parseTimeoutMsEnv },
});
export const stripMcpEnv = stripEnvBoundFields(mcpEnvBindings);
registerConfigSection(MCP_SECTION, McpSectionSchema, {
env: mcpEnvBindings,
stripEnv: stripMcpEnv,
});
|