import type { AttentionFeed, AttentionFeedQuery, AttentionSummary, AttentionTaskIndex, DecisionHistoryPage, DecisionHistoryQuery } from "@paperclipai/shared"; import { api } from "./client"; export const attentionApi = { summary: (companyId: string) => api.get(`/companies/${companyId}/attention/summary`), taskIndex: (companyId: string) => api.get(`/companies/${companyId}/attention/tasks`), history: (companyId: string, options: DecisionHistoryQuery = {}) => { const params = new URLSearchParams(); for (const [key, value] of Object.entries(options)) if (value !== undefined && value !== "") params.set(key, String(value)); return api.get(`/companies/${companyId}/attention/history?${params.toString()}`); }, /** * Fetch the ranked Decisions attention feed for a company. The server * unions every attention source (approvals, interactions, recovery, reviews, * failures, budget…) into one ranked queue with the §0 contract. */ list: (companyId: string, options: AttentionFeedQuery = {}) => { const params = new URLSearchParams(); if (options.includeDismissed) params.set("includeDismissed", "true"); if (options.archived) params.set("archived", "true"); if (options.all) params.set("all", "true"); if (options.activitySince) params.set("activitySince", options.activitySince); if (options.activityUntil) params.set("activityUntil", options.activityUntil); if (options.queue) params.set("queue", options.queue); if (options.sort) params.set("sort", options.sort); if (options.cursor) params.set("cursor", options.cursor); if (options.limit !== undefined) params.set("limit", String(options.limit)); const query = params.toString(); return api.get(`/companies/${companyId}/attention${query ? `?${query}` : ""}`); }, };