export type ProjectRole = "READ" | "DEVELOPER" | "MAINTAINER"; export interface Project { id: string; owner_id: string; code: string; name: string; domain: string | null; github_url: string | null; gitlab_url: string | null; gitlab_project_id: string | null; gitlab_access_token: string | null; gitlab_webhook_secret: string | null; description: string | null; modules?: string | null; // JSON array of modules knowledge_graph?: string | null; // JSON representation of codebase graph created_at: string; updated_at: string; } export interface CreateProjectInput { code: string; name: string; domain?: string | null; github_url?: string | null; gitlab_url?: string | null; gitlab_project_id?: string | null; gitlab_access_token?: string | null; gitlab_webhook_secret?: string | null; description?: string | null; modules?: string[] | null; knowledge_graph?: any | null; } export interface UpdateProjectInput { name?: string; code?: string; domain?: string | null; github_url?: string | null; gitlab_url?: string | null; gitlab_project_id?: string | null; gitlab_access_token?: string | null; gitlab_webhook_secret?: string | null; description?: string | null; modules?: string[] | null; knowledge_graph?: any | null; } export interface ProjectMember { id: string; project_id: string; user_id: string; role: ProjectRole; user_name?: string; user_email?: string; created_at: string; updated_at: string; } export interface ProjectRule { id: string; project_id: string; file_name: string; title: string; content: string; created_at: string; updated_at: string; } export interface ProjectDocument { id: string; project_id: string; category: string; file_name: string; title: string; content: string; created_at: string; updated_at: string; } export interface RepositoryConnector { id: string; repository_id: string; provider: "github" | "gitlab" | "custom_gitlab"; custom_domain: string | null; api_endpoint: string | null; access_token: string | null; webhook_secret: string | null; created_at: string; updated_at: string; }