// Conversation-document ingest contracts.
//
// One skill, one writer, one bash entry — source becomes a property on the
// :KnowledgeDocument parent (which carries `conversationIdentity`) and a
// pluggable normaliser, never a separate skill. Conversations land as
// :KnowledgeDocument + :Section children exactly like documents do; the
// writer's choice of MERGE key + edge set is what distinguishes them, not
// the parent label.
//
// dropped per-line `senderName`. The normaliser is now a
// timestamp-prefix scanner — it walks lines, matches a source-specific
// regex, glues continuations onto the preceding match, and returns body
// strings verbatim. Bodies are opaque: vCards, system messages, forwarded
// blocks, and the bare `Sender:` segment all flow through unchanged.
// Operator-confirmed participants attach to the conversation-document parent
// via `:PARTICIPANT_IN`, never per-message.
//
// `ConversationSource` is the closed enum stamped on every conversation-
// document parent and its :Section chunks. Adding a new source = adding a
// normaliser implementation here + extending this enum, never a new skill
// or plugin.
export const CONVERSATION_SOURCES = [
    "whatsapp",
    "telegram",
    "signal",
    "linkedin-messages",
    "zoom-transcript",
    "meeting-minutes",
    "imessage",
    "slack",
    "x-dm",
    "email",
    "other",
];
export function isConversationSource(s) {
    return typeof s === "string" && CONVERSATION_SOURCES.includes(s);
}
//# sourceMappingURL=types.js.map