36 lines
1.3 KiB
TypeScript
36 lines
1.3 KiB
TypeScript
import type { ActivityEvent } from "@paperclipai/shared";
|
|
import { api } from "./client";
|
|
|
|
export interface RunForIssue {
|
|
runId: string;
|
|
status: string;
|
|
agentId: string;
|
|
startedAt: string | null;
|
|
finishedAt: string | null;
|
|
createdAt: string;
|
|
invocationSource: string;
|
|
usageJson: Record<string, unknown> | null;
|
|
resultJson: Record<string, unknown> | null;
|
|
}
|
|
|
|
export interface IssueForRun {
|
|
issueId: string;
|
|
identifier: string | null;
|
|
title: string;
|
|
status: string;
|
|
priority: string;
|
|
}
|
|
|
|
export const activityApi = {
|
|
list: (companyId: string, filters?: { entityType?: string; entityId?: string; agentId?: string }) => {
|
|
const params = new URLSearchParams();
|
|
if (filters?.entityType) params.set("entityType", filters.entityType);
|
|
if (filters?.entityId) params.set("entityId", filters.entityId);
|
|
if (filters?.agentId) params.set("agentId", filters.agentId);
|
|
const qs = params.toString();
|
|
return api.get<ActivityEvent[]>(`/companies/${companyId}/activity${qs ? `?${qs}` : ""}`);
|
|
},
|
|
forIssue: (issueId: string) => api.get<ActivityEvent[]>(`/issues/${issueId}/activity`),
|
|
runsForIssue: (issueId: string) => api.get<RunForIssue[]>(`/issues/${issueId}/runs`),
|
|
issuesForRun: (runId: string) => api.get<IssueForRun[]>(`/heartbeat-runs/${runId}/issues`),
|
|
};
|