@toolplex/client
Version:
The official ToolPlex client for AI agent tool discovery and execution
32 lines (31 loc) • 1.53 kB
JavaScript
import { InitializeResultSchema, } from "../../shared/serverManagerTypes.js";
import { FileLogger } from "../../shared/fileLogger.js";
const logger = FileLogger;
export async function initServerManagersOnly(serverManagerClients) {
await logger.info("Pre-warming server manager clients");
const initPromises = Object.entries(serverManagerClients).map(async ([runtime, client]) => {
try {
const response = await client.sendRequest("initialize", {});
if ("error" in response)
throw new Error(response.error.message);
const parsed = InitializeResultSchema.safeParse(response);
if (!parsed.success)
throw new Error(parsed.error.message);
return { runtime, result: parsed.data };
}
catch (err) {
await logger.error(`Warmup error for ${runtime}: ${err}`);
return { runtime, result: { succeeded: [], failures: {} } };
}
});
const results = await Promise.all(initPromises);
const allSucceeded = [];
const allFailures = {};
for (const { runtime, result } of results) {
allSucceeded.push(...(result.succeeded || []));
Object.assign(allFailures, result.failures || {});
await logger.debug(`Warmup result for ${runtime}: ${JSON.stringify(result)}`);
}
await logger.debug(`Warmup completed: ${allSucceeded.length} successes, ${Object.keys(allFailures).length} failures`);
return { succeeded: allSucceeded, failures: allFailures };
}