import type { ActivityEvent, RunLivenessState } from "@penclipai/shared"; import { api } from "./client"; export type { RunLivenessState } from "@penclipai/shared"; export interface RunForIssue { runId: string; status: string; agentId: string; adapterType: string; startedAt: string | null; finishedAt: string | null; createdAt: string; invocationSource: string; usageJson: Record | null; resultJson: Record | null; logBytes?: number | null; retryOfRunId?: string | null; scheduledRetryAt?: string | null; scheduledRetryAttempt?: number; scheduledRetryReason?: string | null; retryExhaustedReason?: string | null; livenessState?: RunLivenessState | null; livenessReason?: string | null; continuationAttempt?: number; lastUsefulActionAt?: string | null; nextAction?: string | null; contextSnapshot?: Record | null; environment?: { id: string; name: string; driver: string; } | null; environmentLease?: { id: string; status: string; leasePolicy: string; provider: string | null; providerLeaseId: string | null; executionWorkspaceId: string | null; workspacePath: string | null; failureReason: string | null; cleanupStatus: string | null; acquiredAt: string | Date; releasedAt: string | Date | null; } | 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; limit?: number }) => { 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); if (filters?.limit) params.set("limit", String(filters.limit)); const qs = params.toString(); return api.get(`/companies/${companyId}/activity${qs ? `?${qs}` : ""}`); }, forIssue: (issueId: string) => api.get(`/issues/${issueId}/activity`), runsForIssue: (issueId: string) => api.get(`/issues/${issueId}/runs`), issuesForRun: (runId: string) => api.get(`/heartbeat-runs/${runId}/issues`), };