refactor: dedupe core trimmed string readers

This commit is contained in:
Peter Steinberger
2026-04-07 22:49:49 +01:00
parent 67035a6af8
commit 7999767a0f
4 changed files with 78 additions and 86 deletions

View File

@@ -53,9 +53,9 @@ function normalizePayloadKind(payload: Record<string, unknown>) {
}
function inferPayloadIfMissing(raw: Record<string, unknown>) {
const message = typeof raw.message === "string" ? raw.message.trim() : "";
const text = typeof raw.text === "string" ? raw.text.trim() : "";
const command = typeof raw.command === "string" ? raw.command.trim() : "";
const message = normalizeOptionalString(raw.message) ?? "";
const text = normalizeOptionalString(raw.text) ?? "";
const command = normalizeOptionalString(raw.command) ?? "";
if (message) {
raw.payload = { kind: "agentTurn", message };
return true;
@@ -78,13 +78,13 @@ function copyTopLevelAgentTurnFields(
let mutated = false;
const copyTrimmedString = (field: "model" | "thinking") => {
const existing = payload[field];
if (typeof existing === "string" && existing.trim()) {
const existing = normalizeOptionalString(payload[field]);
if (existing) {
return;
}
const value = raw[field];
if (typeof value === "string" && value.trim()) {
payload[field] = value.trim();
const value = normalizeOptionalString(raw[field]);
if (value) {
payload[field] = value;
mutated = true;
}
};
@@ -112,24 +112,22 @@ function copyTopLevelAgentTurnFields(
payload.deliver = raw.deliver;
mutated = true;
}
if (
typeof payload.channel !== "string" &&
typeof raw.channel === "string" &&
raw.channel.trim()
) {
payload.channel = raw.channel.trim();
const channel = normalizeOptionalString(raw.channel);
if (typeof payload.channel !== "string" && channel) {
payload.channel = channel;
mutated = true;
}
if (typeof payload.to !== "string" && typeof raw.to === "string" && raw.to.trim()) {
payload.to = raw.to.trim();
const to = normalizeOptionalString(raw.to);
if (typeof payload.to !== "string" && to) {
payload.to = to;
mutated = true;
}
const rawThreadId = normalizeOptionalString(raw.threadId);
if (
!("threadId" in payload) &&
((typeof raw.threadId === "number" && Number.isFinite(raw.threadId)) ||
(typeof raw.threadId === "string" && raw.threadId.trim()))
((typeof raw.threadId === "number" && Number.isFinite(raw.threadId)) || Boolean(rawThreadId))
) {
payload.threadId = typeof raw.threadId === "string" ? raw.threadId.trim() : raw.threadId;
payload.threadId = rawThreadId ?? raw.threadId;
mutated = true;
}
if (
@@ -139,12 +137,9 @@ function copyTopLevelAgentTurnFields(
payload.bestEffortDeliver = raw.bestEffortDeliver;
mutated = true;
}
if (
typeof payload.provider !== "string" &&
typeof raw.provider === "string" &&
raw.provider.trim()
) {
payload.provider = raw.provider.trim();
const provider = normalizeOptionalString(raw.provider);
if (typeof payload.provider !== "string" && provider) {
payload.provider = provider;
mutated = true;
}
@@ -300,11 +295,11 @@ export function normalizeStoredCronJobs(
trackIssue("legacyPayloadKind");
}
if (!payloadRecord.kind) {
if (typeof payloadRecord.message === "string" && payloadRecord.message.trim()) {
if (normalizeOptionalString(payloadRecord.message)) {
payloadRecord.kind = "agentTurn";
mutated = true;
trackIssue("legacyPayloadKind");
} else if (typeof payloadRecord.text === "string" && payloadRecord.text.trim()) {
} else if (normalizeOptionalString(payloadRecord.text)) {
payloadRecord.kind = "systemEvent";
mutated = true;
trackIssue("legacyPayloadKind");
@@ -343,8 +338,7 @@ export function normalizeStoredCronJobs(
}
if (payloadRecord) {
const hadLegacyPayloadProvider =
typeof payloadRecord.provider === "string" && payloadRecord.provider.trim().length > 0;
const hadLegacyPayloadProvider = Boolean(normalizeOptionalString(payloadRecord.provider));
if (migrateLegacyCronPayload(payloadRecord)) {
mutated = true;
if (hadLegacyPayloadProvider) {
@@ -361,7 +355,7 @@ export function normalizeStoredCronJobs(
sched.kind = "at";
mutated = true;
}
const atRaw = typeof sched.at === "string" ? sched.at.trim() : "";
const atRaw = normalizeOptionalString(sched.at) ?? "";
const atMsRaw = sched.atMs;
const parsedAtMs =
typeof atMsRaw === "number"
@@ -403,8 +397,8 @@ export function normalizeStoredCronJobs(
}
}
const exprRaw = typeof sched.expr === "string" ? sched.expr.trim() : "";
const legacyCronRaw = typeof sched.cron === "string" ? sched.cron.trim() : "";
const exprRaw = normalizeOptionalString(sched.expr) ?? "";
const legacyCronRaw = normalizeOptionalString(sched.cron) ?? "";
let normalizedExpr = exprRaw;
if (!normalizedExpr && legacyCronRaw) {
normalizedExpr = legacyCronRaw;
@@ -461,7 +455,7 @@ export function normalizeStoredCronJobs(
const payloadKind =
payloadRecord && typeof payloadRecord.kind === "string" ? payloadRecord.kind : "";
const rawSessionTarget = typeof raw.sessionTarget === "string" ? raw.sessionTarget.trim() : "";
const rawSessionTarget = normalizeOptionalString(raw.sessionTarget) ?? "";
const loweredSessionTarget = normalizeLowercaseStringOrEmpty(rawSessionTarget);
if (loweredSessionTarget === "main" || loweredSessionTarget === "isolated") {
if (raw.sessionTarget !== loweredSessionTarget) {