Files
PaperClipAI/server/src/services/issue-visibility.ts
T
2026-10-30 16:44:21 -05:00

23 lines
928 B
TypeScript

import { nonIdleSlackIssueCondition } from "./slack-conversation-state.js";
import { and, isNull, isNotNull, or, type SQL } from "drizzle-orm";
import { issues } from "@paperclipai/db";
export function visibleIssueCondition(): SQL {
return and(isNull(issues.hiddenAt), isNull(issues.harnessKind))!;
}
export function visibleIssueSql(alias = "issues") {
return `"${alias}"."hidden_at" IS NULL AND "${alias}"."harness_kind" IS NULL`;
}
/** Work queues and execution totals omit persistent conversation containers. */
export function executionIssueCondition(): SQL {
return and(visibleIssueCondition(), isNull(issues.conversationAgentId), nonIdleSlackIssueCondition())!;
}
export function attentionIssueCondition(includeConversations = false): SQL {
return includeConversations
? or(executionIssueCondition(), and(visibleIssueCondition(), isNotNull(issues.conversationAgentId)))!
: executionIssueCondition();
}