claritykit-svelte
Version:
A comprehensive Svelte component library focused on accessibility, ADHD-optimized design, developer experience, and full SSR compatibility
172 lines • 4.82 kB
TypeScript
import type { HTMLAttributes } from 'svelte/elements';
export type IntegrationType = 'notion' | 'kanban' | 'github' | 'jira' | 'slack' | 'discord' | 'custom';
export type SyncStatus = 'connected' | 'disconnected' | 'connecting' | 'syncing' | 'error' | 'pending';
export interface IntegrationConfig {
id: string;
name: string;
type: IntegrationType;
status: SyncStatus;
config: {
apiKey?: string;
apiSecret?: string;
workspace?: string;
database?: string;
board?: string;
channel?: string;
webhook?: string;
credentials?: Record<string, any>;
description?: string;
[key: string]: any;
};
features?: Array<{
id: string;
name: string;
description: string;
enabled: boolean;
config?: Record<string, any>;
}>;
syncHistory?: Array<{
timestamp: Date;
success: boolean;
itemsSynced: number;
duration: number;
error?: string;
}>;
metadata?: {
lastSync?: Date;
totalSynced?: number;
errorCount?: number;
rateLimitRemaining?: number;
version?: string;
};
}
export interface SyncResult {
success: boolean;
itemsProcessed: number;
itemsCreated: number;
itemsUpdated: number;
itemsDeleted: number;
errors: Array<{
item: string;
error: string;
}>;
duration: number;
metadata?: Record<string, any>;
}
export interface ProjectIntegrationPanelProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onConnect' | 'onDisconnect'> {
/**
* List of available integrations
*/
integrations: IntegrationConfig[];
/**
* Currently active integration tab
*/
activeIntegration?: string | null;
/**
* Show sync history for integrations
* @default true
*/
showSyncHistory?: boolean;
/**
* Enable automatic syncing
* @default false
*/
autoSync?: boolean;
/**
* Sync interval in milliseconds
* @default 300000 (5 minutes)
*/
syncInterval?: number;
/**
* Maximum retry attempts for failed syncs
* @default 3
*/
maxRetries?: number;
/**
* Callback when connecting an integration
*/
onConnect?: (integration: IntegrationConfig) => void | Promise<void>;
/**
* Callback when disconnecting an integration
*/
onDisconnect?: (integrationId: string) => void | Promise<void>;
/**
* Callback when syncing an integration
*/
onSync?: (integrationId: string) => Promise<SyncResult>;
/**
* Callback when updating integration config
*/
onConfigUpdate?: (integrationId: string, config: IntegrationConfig) => void;
}
export interface NotionIntegration extends IntegrationConfig {
type: 'notion';
config: {
apiKey: string;
workspace: string;
databases: Array<{
id: string;
name: string;
type: 'projects' | 'tasks' | 'notes' | 'resources';
}>;
syncDirection: 'bidirectional' | 'to-notion' | 'from-notion';
fieldMappings: Record<string, string>;
};
}
export interface KanbanIntegration extends IntegrationConfig {
type: 'kanban';
config: {
boardId: string;
boardName: string;
lists: Array<{
id: string;
name: string;
position: number;
}>;
cardTemplate: {
titleField: string;
descriptionField: string;
labelsField?: string;
assigneeField?: string;
};
};
}
export interface GitHubIntegration extends IntegrationConfig {
type: 'github';
config: {
token: string;
owner: string;
repo: string;
defaultBranch: string;
issueLabels: string[];
prTemplate?: string;
webhookSecret?: string;
};
}
export interface IntegrationEvent {
id: string;
integrationId: string;
type: 'item-created' | 'item-updated' | 'item-deleted' | 'sync-completed' | 'error';
timestamp: Date;
data: {
itemType?: string;
itemId?: string;
changes?: Record<string, any>;
error?: string;
};
}
export interface AgentIntegrationContext {
/**
* Oracle can use integrations to fetch external data
*/
fetchExternalContext: (integration: IntegrationConfig) => Promise<any>;
/**
* Architect can create projects in external systems
*/
createExternalProject: (integration: IntegrationConfig, project: any) => Promise<string>;
/**
* Scribe can sync notes to external systems
*/
syncNotesToExternal: (integration: IntegrationConfig, notes: any[]) => Promise<SyncResult>;
}
//# sourceMappingURL=types.d.ts.map