doopal
Version:
JavaScript/TypeScript SDK for Doopal AI Governance Platform
382 lines (335 loc) • 9.66 kB
TypeScript
/**
* TypeScript definitions for Doopal AI Governance JavaScript SDK
*/
export interface DoopalConfig {
apiKey: string;
baseUrl?: string;
timeout?: number;
maxRetries?: number;
organizationId?: string;
}
export interface ChatMessage {
role: string;
content: string;
}
export interface ChatCompletionParams {
provider: string;
model: string;
messages: ChatMessage[];
temperature?: number;
maxTokens?: number;
stream?: boolean;
metadata?: Record<string, any>;
}
export interface CompletionParams {
provider: string;
model: string;
prompt: string;
temperature?: number;
maxTokens?: number;
metadata?: Record<string, any>;
}
export interface EmbeddingsParams {
provider: string;
model: string;
inputText: string | string[];
metadata?: Record<string, any>;
}
export interface DoopalResponse {
response: string;
provider: string;
model: string;
usage?: {
prompt_tokens?: number;
completion_tokens?: number;
total_tokens?: number;
};
metadata?: Record<string, any>;
redacted_content?: string[];
}
export interface UsageStats {
total_requests: number;
total_cost: number;
requests_by_provider: Record<string, number>;
cost_by_provider: Record<string, number>;
redacted_requests: number;
blocked_requests: number;
}
export interface HealthStatus {
status: string;
version: string;
uptime: number;
checks: Record<string, boolean>;
}
export interface DetailedHealthStatus {
status: string;
version: string;
uptime: number;
database: {
status: string;
responseTime: number;
connections: number;
};
redis: {
status: string;
responseTime: number;
memory: number;
};
aiProviders: Record<string, {
status: string;
responseTime: number;
}>;
timestamp: string;
}
export interface OrganizationInfo {
id: string;
name: string;
settings: Record<string, any>;
createdAt: string;
updatedAt: string;
}
export interface UserRoles {
role: string;
permissions: string[];
organizationId: string;
}
export interface OrganizationMember {
id: string;
email: string;
role: string;
status: string;
joinedAt: string;
}
export interface InvitationRequest {
email: string;
role: string;
message?: string;
}
export interface SsoConfig {
provider: string;
domain: string;
clientId: string;
clientSecret: string;
enabled?: boolean;
}
export interface AuditLogEntry {
id: string;
action: string;
userId: string;
organizationId: string;
timestamp: string;
details: Record<string, any>;
}
export interface AnalyticsFilters {
startDate?: string;
endDate?: string;
framework?: string;
severity?: string;
timeframe?: string;
metric?: string;
aggregation?: string;
provider?: string;
groupBy?: string;
}
export interface ComplianceStatus {
framework: string;
score: number;
violations: number;
lastAssessment: string;
recommendations: string[];
}
export interface ComplianceReportConfig {
framework: string;
format: string;
period: string;
includeViolations?: boolean;
includeRemediation?: boolean;
}
export interface ComplianceViolation {
id: string;
framework: string;
severity: string;
description: string;
status: string;
createdAt: string;
resolvedAt?: string;
}
export interface Policy {
id: string;
name: string;
description: string;
policyType: string;
policyContent: string;
enabled: boolean;
priority: number;
createdAt: string;
updatedAt: string;
}
export interface PolicyTestConfig {
policyId: string;
testInput: Record<string, any>;
}
export interface Provider {
id: string;
name: string;
providerType: string;
apiKey: string;
modelConfigs: Record<string, any>;
rateLimits: Record<string, number>;
enabled: boolean;
}
export interface SecurityThreat {
id: string;
type: string;
severity: string;
description: string;
source: string;
timestamp: string;
status: string;
}
export interface ObservabilityMetrics {
metric: string;
value: number;
timestamp: string;
labels: Record<string, string>;
}
export interface SystemAlert {
id: string;
name: string;
severity: string;
status: string;
description: string;
triggeredAt: string;
resolvedAt?: string;
}
export interface Integration {
id: string;
type: string;
name: string;
config: Record<string, any>;
enabled: boolean;
status: string;
}
export interface ValidationConfig {
schema: Record<string, any>;
data: Record<string, any>;
}
export interface ValidationResult {
valid: boolean;
errors: string[];
warnings: string[];
}
export interface PIIValidationResult {
piiDetected: boolean;
entities: Array<{
type: string;
value: string;
confidence: number;
start: number;
end: number;
}>;
redactedContent: string;
}
export class DoopalError extends Error {
statusCode?: number;
constructor(message: string, statusCode?: number);
}
export class PolicyViolationError extends DoopalError {
constructor(message: string);
}
export class RedactionError extends DoopalError {
constructor(message: string);
}
export class DoopalClient {
constructor(config: DoopalConfig);
// Core AI Gateway Methods
chatCompletion(params: ChatCompletionParams): Promise<DoopalResponse | AsyncGenerator<string>>;
completion(params: CompletionParams): Promise<DoopalResponse>;
embeddings(params: EmbeddingsParams): Promise<DoopalResponse>;
getUsageStats(): Promise<UsageStats>;
// Health Check Methods
healthCheck(): Promise<HealthStatus>;
getDetailedHealth(): Promise<DetailedHealthStatus>;
getReadinessStatus(): Promise<HealthStatus>;
getLivenessStatus(): Promise<HealthStatus>;
// Enterprise Organization Management
getOrganization(): Promise<OrganizationInfo>;
updateOrganization(settings: Partial<OrganizationInfo>): Promise<OrganizationInfo>;
getUserRoles(): Promise<UserRoles>;
getOrganizationMembers(): Promise<OrganizationMember[]>;
inviteUser(invitation: InvitationRequest): Promise<{ success: boolean; invitationId: string }>;
configureSso(ssoConfig: SsoConfig): Promise<{ success: boolean; configId: string }>;
getAuditLogs(filters?: Record<string, any>): Promise<AuditLogEntry[]>;
// Advanced Analytics
getComplianceAnalytics(filters?: AnalyticsFilters): Promise<Record<string, any>>;
getThreatAnalytics(filters?: AnalyticsFilters): Promise<Record<string, any>>;
getPerformanceAnalytics(filters?: AnalyticsFilters): Promise<Record<string, any>>;
getCostAnalytics(filters?: AnalyticsFilters): Promise<Record<string, any>>;
// Compliance Reporting
getComplianceStatus(framework?: string): Promise<ComplianceStatus>;
generateComplianceReport(reportConfig: ComplianceReportConfig): Promise<{ reportId: string; downloadUrl: string }>;
getComplianceViolations(filters?: Record<string, any>): Promise<ComplianceViolation[]>;
// Policy Management
getPolicies(): Promise<Policy[]>;
createPolicy(policy: Omit<Policy, 'id' | 'createdAt' | 'updatedAt'>): Promise<Policy>;
updatePolicy(policyId: string, updates: Partial<Policy>): Promise<Policy>;
deletePolicy(policyId: string): Promise<{ success: boolean }>;
testPolicy(testConfig: PolicyTestConfig): Promise<{ allowed: boolean; reason?: string }>;
// Provider Management
getProviders(): Promise<Provider[]>;
addProvider(provider: Omit<Provider, 'id'>): Promise<Provider>;
updateProvider(providerId: string, updates: Partial<Provider>): Promise<Provider>;
// Security & Monitoring
getSecurityThreats(filters?: Record<string, any>): Promise<SecurityThreat[]>;
getObservabilityMetrics(filters?: Record<string, any>): Promise<ObservabilityMetrics[]>;
getAlerts(filters?: Record<string, any>): Promise<SystemAlert[]>;
// Integrations
getIntegrations(): Promise<Integration[]>;
configureIntegration(integration: Omit<Integration, 'id' | 'status'>): Promise<Integration>;
// Data Validation
validateStructuredData(validationConfig: ValidationConfig): Promise<ValidationResult>;
validatePII(content: { content: string }): Promise<PIIValidationResult>;
// OpenAI-Compatible Methods
openaiChatCompletions(params: {
model: string;
messages: ChatMessage[];
temperature?: number;
maxTokens?: number;
stream?: boolean;
}): Promise<any>;
openaiEmbeddings(params: { model: string; inputs: string | string[] }): Promise<any>;
openaiListModels(): Promise<any>;
}
export default DoopalClient;
// Re-export all types for convenience
export {
DoopalConfig,
ChatMessage,
ChatCompletionParams,
CompletionParams,
EmbeddingsParams,
DoopalResponse,
UsageStats,
HealthStatus,
DetailedHealthStatus,
OrganizationInfo,
UserRoles,
OrganizationMember,
InvitationRequest,
SsoConfig,
AuditLogEntry,
AnalyticsFilters,
ComplianceStatus,
ComplianceReportConfig,
ComplianceViolation,
Policy,
PolicyTestConfig,
Provider,
SecurityThreat,
ObservabilityMetrics,
SystemAlert,
Integration,
ValidationConfig,
ValidationResult,
PIIValidationResult
};