import { z } from "zod"; import { normalizeOptionalString as toText } from "../shared/string-coerce.js"; import { normalizeMessageChannel } from "../utils/message-channel.js";
export type ClaudeChannelMode = "off" | "on" | "auto";
export type ConversationDescriptor = {
sessionKey: string;
channel: string;
to: string;
accountId?: string;
threadId?: string | number;
label?: string;
displayName?: string;
derivedTitle?: string;
lastMessagePreview?: string;
updatedAt?: number | null;
};
export function matchEventFilter(event: QueueEvent, filter: WaitFilter): boolean { if (event.cursor <= filter.afterCursor) { returnfalse;
} if (!filter.sessionKey) { returntrue;
} return"sessionKey" in event && event.sessionKey === filter.sessionKey;
}
export function extractAttachmentsFromMessage(message: unknown): unknown[] { if (!message || typeof message !== "object") { return [];
} const content = (message as { content?: unknown }).content; if (!Array.isArray(content)) { return [];
} return content.filter((entry) => { if (!entry || typeof entry !== "object") { returnfalse;
} return toText((entry as { type?: unknown }).type) !== "text";
});
}
export function normalizeApprovalId(value: unknown): string | undefined { const id = toText(value); return id ? id.trim() : undefined;
}
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.12Bemerkung:
(vorverarbeitet am 2026-06-09)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.