import { loadVoiceAgentConfig } from "./config.ts";
import { McpToolClient } from "./mcp-tool-client.ts";
import { discoverRingCentralSipDevice, redactSipEnv } from "./ringcentral-sip-discovery.ts";

const config = loadVoiceAgentConfig();
const endpoint = config.mcp.ringcentralAdmin;
if (!endpoint.bearerToken) {
  throw new Error("MCP_BEARER_TOKEN is required for RingCentral SIP discovery.");
}

const admin = new McpToolClient({
  name: endpoint.name,
  mcpUrl: endpoint.mcpUrl,
  bearerToken: endpoint.bearerToken,
});

try {
  const result = await discoverRingCentralSipDevice({
    admin,
    extensionId: process.env.RC_SIP_EXTENSION_ID,
    extensionNamePattern: process.env.RC_AI_EXTENSION_NAME
      ? new RegExp(process.env.RC_AI_EXTENSION_NAME, "i")
      : undefined,
    deviceId: process.env.RC_SIP_DEVICE_ID,
    writeEnvPath: process.env.RC_SIP_WRITE_ENV,
  });
  console.log(
    JSON.stringify(
      {
        ...result,
        sipEnv: result.sipEnv ? redactSipEnv(result.sipEnv) : undefined,
      },
      null,
      2,
    ),
  );
  process.exit(result.ok ? 0 : 1);
} finally {
  await admin.close();
}
