refactor: centralize message provider normalization
This commit is contained in:
@@ -7,6 +7,7 @@ import {
|
||||
} from "../config/sessions.js";
|
||||
import { callGateway, randomIdempotencyKey } from "../gateway/call.js";
|
||||
import type { RuntimeEnv } from "../runtime.js";
|
||||
import { normalizeMessageProvider } from "../utils/message-provider.js";
|
||||
import { agentCommand } from "./agent.js";
|
||||
|
||||
type AgentGatewayResult = {
|
||||
@@ -85,12 +86,6 @@ function parseTimeoutSeconds(opts: {
|
||||
return raw;
|
||||
}
|
||||
|
||||
function normalizeProvider(raw?: string): string | undefined {
|
||||
const normalized = raw?.trim().toLowerCase();
|
||||
if (!normalized) return undefined;
|
||||
return normalized === "imsg" ? "imessage" : normalized;
|
||||
}
|
||||
|
||||
function formatPayloadForLog(payload: {
|
||||
text?: string;
|
||||
mediaUrls?: string[];
|
||||
@@ -127,7 +122,7 @@ export async function agentViaGatewayCommand(
|
||||
sessionId: opts.sessionId,
|
||||
});
|
||||
|
||||
const provider = normalizeProvider(opts.provider) ?? "whatsapp";
|
||||
const provider = normalizeMessageProvider(opts.provider) ?? "whatsapp";
|
||||
const idempotencyKey = opts.runId?.trim() || randomIdempotencyKey();
|
||||
|
||||
const response = await callGateway<GatewayAgentResponse>({
|
||||
|
||||
@@ -56,6 +56,10 @@ import {
|
||||
import { resolveOutboundTarget } from "../infra/outbound/targets.js";
|
||||
import { defaultRuntime, type RuntimeEnv } from "../runtime.js";
|
||||
import { resolveSendPolicy } from "../sessions/send-policy.js";
|
||||
import {
|
||||
normalizeMessageProvider,
|
||||
resolveMessageProvider,
|
||||
} from "../utils/message-provider.js";
|
||||
import { normalizeE164 } from "../utils.js";
|
||||
|
||||
type AgentCommandOpts = {
|
||||
@@ -395,13 +399,10 @@ export async function agentCommand(
|
||||
let fallbackProvider = provider;
|
||||
let fallbackModel = model;
|
||||
try {
|
||||
const messageProvider =
|
||||
opts.messageProvider?.trim().toLowerCase() ||
|
||||
(() => {
|
||||
const raw = opts.provider?.trim().toLowerCase();
|
||||
if (!raw) return undefined;
|
||||
return raw === "imsg" ? "imessage" : raw;
|
||||
})();
|
||||
const messageProvider = resolveMessageProvider(
|
||||
opts.messageProvider,
|
||||
opts.provider,
|
||||
);
|
||||
const fallbackResult = await runWithModelFallback({
|
||||
cfg,
|
||||
provider,
|
||||
@@ -514,9 +515,8 @@ export async function agentCommand(
|
||||
const payloads = result.payloads ?? [];
|
||||
const deliver = opts.deliver === true;
|
||||
const bestEffortDeliver = opts.bestEffortDeliver === true;
|
||||
const deliveryProviderRaw = (opts.provider ?? "whatsapp").toLowerCase();
|
||||
const deliveryProvider =
|
||||
deliveryProviderRaw === "imsg" ? "imessage" : deliveryProviderRaw;
|
||||
normalizeMessageProvider(opts.provider) ?? "whatsapp";
|
||||
|
||||
const logDeliveryError = (err: unknown) => {
|
||||
const message = `Delivery failed (${deliveryProvider}${deliveryTarget ? ` to ${deliveryTarget}` : ""}): ${String(err)}`;
|
||||
|
||||
@@ -11,6 +11,7 @@ import {
|
||||
} from "../infra/outbound/format.js";
|
||||
import { resolveOutboundTarget } from "../infra/outbound/targets.js";
|
||||
import type { RuntimeEnv } from "../runtime.js";
|
||||
import { normalizeMessageProvider } from "../utils/message-provider.js";
|
||||
|
||||
export async function sendCommand(
|
||||
opts: {
|
||||
@@ -26,8 +27,7 @@ export async function sendCommand(
|
||||
deps: CliDeps,
|
||||
runtime: RuntimeEnv,
|
||||
) {
|
||||
const providerRaw = (opts.provider ?? "whatsapp").toLowerCase();
|
||||
const provider = providerRaw === "imsg" ? "imessage" : providerRaw;
|
||||
const provider = normalizeMessageProvider(opts.provider) ?? "whatsapp";
|
||||
|
||||
if (opts.dryRun) {
|
||||
runtime.log(
|
||||
|
||||
Reference in New Issue
Block a user