Libra CodeHub

CedarCopilot/cedar-mail

Branch: staging

fix(crm): stop silently dropping unsupported conversation-lookup filters

merged#2882CedarCopilot

CedarCopilot wants to merge 3 commits into staging from worktree-agent-a0f9ba015e36f0475

What Libra verified

  • Date custom-field comparisons include the requested calendar boundary

    Libra ran this behavior against the change and confirmed the check detects when it breaks.

    Technical evidence
    • gt, gte, lt, and lte on wm_ date fields compare current values as timestamps
    • a bare YYYY-MM-DD custom-field comparison input is normalized to noon UTC
    • a custom-field comparison input that already has a time component is preserved

    Changed code: findCRMConversationsTool.ts.

  • Empty membership filters retain their set semantics

    Libra ran this behavior against the change and confirmed the check detects when it breaks.

    Technical evidence
    • an empty standard-field in filter produces a real condition that matches no conversations
    • an empty standard-field notIn filter produces a real condition that excludes no conversations
    • an empty custom-field in filter produces a real condition that matches no conversations
    • an empty custom-field notIn filter produces a real condition that excludes no conversations

    Changed code: conversation-lookup.ts.

  • Malformed custom-field text does not disrupt date-filtered lookups

    Libra ran this behavior against the change and confirmed the check detects when it breaks.

    Technical evidence
    • each date comparison guards the stored custom-field text before casting it, so arbitrary or malformed content cannot disrupt the lookup
    • only values matching the date shape participate in each custom-field date comparison

    Changed code: conversation-lookup.ts.

run 2928e0a0-7e19-4c69-ac96-d501abf8b6d0, completed Sep 22, 2026, 4:02 PM