/**
 * Resolve the region from the provided value or AGENTUITY_REGION environment variable.
 * Throws an error if no region can be resolved.
 */
export function resolveRegion(region) {
    const resolved = region ?? process.env.AGENTUITY_REGION;
    if (!resolved) {
        throw new Error('Region is required but not provided. Set the AGENTUITY_REGION environment variable or pass region as a parameter.');
    }
    return resolved;
}
/**
 * Get service URLs from environment variables with fallback defaults.
 * Throws an error if region cannot be resolved (neither passed as parameter nor set via AGENTUITY_REGION).
 */
export function getServiceUrls(region) {
    const resolvedRegion = resolveRegion(region);
    const transportUrl = process.env.AGENTUITY_TRANSPORT_URL || buildRegionalURL(resolvedRegion, 'catalyst');
    return {
        keyvalue: process.env.AGENTUITY_KEYVALUE_URL || transportUrl,
        stream: process.env.AGENTUITY_STREAM_URL || buildRegionalURL(resolvedRegion, 'streams'),
        vector: process.env.AGENTUITY_VECTOR_URL || transportUrl,
        aigateway: process.env.AGENTUITY_AIGATEWAY_URL || buildRegionalURL(resolvedRegion, 'aigateway'),
        catalyst: process.env.AGENTUITY_CATALYST_URL || transportUrl,
        otel: process.env.AGENTUITY_OTLP_URL || buildRegionalURL(resolvedRegion, 'otel'),
        sandbox: process.env.AGENTUITY_SANDBOX_URL || transportUrl,
        email: process.env.AGENTUITY_EMAIL_URL || transportUrl,
    };
}
function getDomainSuffix(region) {
    if (region === 'local' || region === 'l') {
        return 'agentuity.io';
    }
    return 'agentuity.cloud';
}
function buildRegionalURL(region, hostname) {
    const suffix = getDomainSuffix(region);
    if (suffix === 'agentuity.io') {
        return `https://${hostname}.${suffix}`;
    }
    return `https://${hostname}-${region}.${suffix}`;
}
//# sourceMappingURL=config.js.map