md-linear-sync
Version:
Sync Linear tickets to local markdown files with status-based folder organization
119 lines • 2.66 kB
TypeScript
export interface TicketMetadata {
linear_id: string;
title: string;
status: "Todo" | "In Progress" | "In Review" | "Backlog" | "Done" | "Cancelled";
assignee?: string;
labels: string[];
priority: 1 | 2 | 3 | 4;
due_date?: string;
url: string;
created_at: string;
updated_at: string;
}
export interface Comment {
id: string;
author: string;
content: string;
created_at: string;
replies?: Comment[];
}
export interface TicketFile {
frontmatter: TicketMetadata;
content: string;
comments: Comment[];
}
export interface SyncOptions {
direction: "push" | "pull";
ticketId?: string;
}
export interface WebhookPayload {
type: "Issue" | "Comment";
action: "create" | "update" | "delete";
data: {
id: string;
title?: string;
description?: string;
state?: {
name: string;
};
assignee?: {
email: string;
};
labels?: {
name: string;
}[];
priority?: number;
dueDate?: string;
updatedAt: string;
url: string;
};
comment?: {
id: string;
body: string;
user: {
email: string;
};
createdAt: string;
};
}
export interface RetryConfig {
maxAttempts: 3;
delays: [0, 30000, 120000];
}
export interface SlackNotification {
type: "success" | "error" | "info";
title: string;
message: string;
ticketId?: string;
ticketUrl?: string;
changes?: Record<string, {
from: any;
to: any;
}>;
timestamp: string;
}
export interface StatusMapping {
id: string;
folder: string;
type?: string;
}
export interface LinearSyncConfig {
teamId: string;
teamName: string;
projectId: string;
projectName: string;
statusMapping: Record<string, StatusMapping>;
labelMapping: Record<string, {
id: string;
color: string;
description?: string;
}>;
timezone: string;
lastUpdated: string;
}
export interface LinearApiConfig {
apiKey: string;
teamId: string;
webhookSecret?: string;
}
export interface SlackConfig {
webhookUrl?: string;
}
export type StatusFolder = "todo" | "in-progress" | "in-review" | "backlog" | "completed" | "cancelled";
export interface LinearTeam {
id: string;
name: string;
key: string;
}
export interface LinearProject {
id: string;
name: string;
description?: string;
}
export interface LinearWorkflowState {
id: string;
name: string;
type: string;
position: number;
}
//# sourceMappingURL=index.d.ts.map