@lov3kaizen/agentsea-redteam 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/LICENSE +21 -0
  2. package/dist/attack.types-BK8Qc_Bl.d.ts +82 -0
  3. package/dist/attacks/index.d.ts +186 -0
  4. package/dist/attacks/index.js +1847 -0
  5. package/dist/attacks/index.js.map +1 -0
  6. package/dist/audit/index.d.ts +22 -0
  7. package/dist/audit/index.js +15 -0
  8. package/dist/audit/index.js.map +1 -0
  9. package/dist/audit.types-BiWJxaod.d.ts +215 -0
  10. package/dist/benchmark.types-COcarrIj.d.ts +147 -0
  11. package/dist/benchmarks/index.d.ts +10 -0
  12. package/dist/benchmarks/index.js +11 -0
  13. package/dist/benchmarks/index.js.map +1 -0
  14. package/dist/compliance/index.d.ts +9 -0
  15. package/dist/compliance/index.js +10 -0
  16. package/dist/compliance/index.js.map +1 -0
  17. package/dist/compliance.types-CAnQxiA-.d.ts +187 -0
  18. package/dist/continuous/index.d.ts +21 -0
  19. package/dist/continuous/index.js +18 -0
  20. package/dist/continuous/index.js.map +1 -0
  21. package/dist/continuous.types-Btw2YvvR.d.ts +588 -0
  22. package/dist/core/index.d.ts +363 -0
  23. package/dist/core/index.js +1456 -0
  24. package/dist/core/index.js.map +1 -0
  25. package/dist/detection/index.d.ts +29 -0
  26. package/dist/detection/index.js +309 -0
  27. package/dist/detection/index.js.map +1 -0
  28. package/dist/detection.types-D_TDuLBo.d.ts +170 -0
  29. package/dist/index.d.ts +21 -0
  30. package/dist/index.js +5011 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/integrations/index.d.ts +41 -0
  33. package/dist/integrations/index.js +23 -0
  34. package/dist/integrations/index.js.map +1 -0
  35. package/dist/scanning/index.d.ts +80 -0
  36. package/dist/scanning/index.js +1351 -0
  37. package/dist/scanning/index.js.map +1 -0
  38. package/dist/types/index.d.ts +204 -0
  39. package/dist/types/index.js +3 -0
  40. package/dist/types/index.js.map +1 -0
  41. package/package.json +104 -0
@@ -0,0 +1,588 @@
1
+ import { c as Attack, S as Severity, e as AttackResult, f as AttackExecutionOptions, A as AttackCategory } from './attack.types-BK8Qc_Bl.js';
2
+ import { d as BenchmarkResult } from './benchmark.types-COcarrIj.js';
3
+ import { e as ComplianceCheckResult } from './compliance.types-CAnQxiA-.js';
4
+
5
+ type TestStatus = 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';
6
+ type TestResultOutcome = 'passed' | 'failed' | 'mixed' | 'error' | 'skipped';
7
+ interface TestCase {
8
+ id: string;
9
+ name: string;
10
+ description: string;
11
+ attack: Attack;
12
+ preconditions?: string[];
13
+ expectedResult: 'blocked' | 'allowed' | 'detected' | 'mitigated';
14
+ failureSeverity: Severity;
15
+ tags: string[];
16
+ skip?: boolean;
17
+ skipReason?: string;
18
+ timeout?: number;
19
+ }
20
+ interface TestCaseResult {
21
+ testCase: TestCase;
22
+ attackResult: AttackResult;
23
+ passed: boolean;
24
+ status: TestStatus;
25
+ failureReason?: string;
26
+ durationMs: number;
27
+ timestamp: number;
28
+ retryCount: number;
29
+ }
30
+ interface TestSuiteConfig {
31
+ name: string;
32
+ description?: string;
33
+ testCases: TestCase[];
34
+ defaultOptions?: AttackExecutionOptions;
35
+ setup?: () => Promise<void>;
36
+ teardown?: () => Promise<void>;
37
+ beforeEach?: (testCase: TestCase) => Promise<void>;
38
+ afterEach?: (result: TestCaseResult) => Promise<void>;
39
+ parallel?: boolean;
40
+ maxParallel?: number;
41
+ failFast?: boolean;
42
+ filterTags?: string[];
43
+ skipTags?: string[];
44
+ }
45
+ interface TestSuiteResult {
46
+ id: string;
47
+ name: string;
48
+ outcome: TestResultOutcome;
49
+ status: TestStatus;
50
+ results: TestCaseResult[];
51
+ summary: TestSummary;
52
+ startTime: number;
53
+ endTime: number;
54
+ durationMs: number;
55
+ error?: string;
56
+ }
57
+ interface TestSummary {
58
+ total: number;
59
+ passed: number;
60
+ failed: number;
61
+ skipped: number;
62
+ errors: number;
63
+ passRate: number;
64
+ bySeverity: {
65
+ critical: {
66
+ passed: number;
67
+ failed: number;
68
+ };
69
+ high: {
70
+ passed: number;
71
+ failed: number;
72
+ };
73
+ medium: {
74
+ passed: number;
75
+ failed: number;
76
+ };
77
+ low: {
78
+ passed: number;
79
+ failed: number;
80
+ };
81
+ informational: {
82
+ passed: number;
83
+ failed: number;
84
+ };
85
+ };
86
+ }
87
+ interface TestRunConfig {
88
+ runId?: string;
89
+ environment?: string;
90
+ target?: TargetInfo;
91
+ executionOptions?: AttackExecutionOptions;
92
+ outputFormat?: 'json' | 'junit' | 'html' | 'markdown';
93
+ outputPath?: string;
94
+ verbose?: boolean;
95
+ reporter?: TestReporter;
96
+ }
97
+ interface TargetInfo {
98
+ name: string;
99
+ type: 'agent' | 'api' | 'model' | 'endpoint' | 'custom';
100
+ version?: string;
101
+ endpoint?: string;
102
+ model?: string;
103
+ metadata?: Record<string, unknown>;
104
+ }
105
+ interface TestReporter {
106
+ onSuiteStart?: (suite: TestSuiteConfig) => void;
107
+ onTestStart?: (testCase: TestCase) => void;
108
+ onTestComplete?: (result: TestCaseResult) => void;
109
+ onSuiteComplete?: (result: TestSuiteResult) => void;
110
+ onProgress?: (progress: TestProgress) => void;
111
+ }
112
+ interface TestProgress {
113
+ current: number;
114
+ total: number;
115
+ percentage: number;
116
+ currentTestName: string;
117
+ passed: number;
118
+ failed: number;
119
+ elapsedMs: number;
120
+ estimatedRemainingMs?: number;
121
+ }
122
+ interface TestAssertion {
123
+ type: 'contains' | 'notContains' | 'matches' | 'equals' | 'custom';
124
+ expected: string | RegExp;
125
+ actual?: string;
126
+ passed: boolean;
127
+ message?: string;
128
+ }
129
+ interface RetryPolicy {
130
+ maxRetries: number;
131
+ initialDelay: number;
132
+ backoffMultiplier: number;
133
+ maxDelay: number;
134
+ retryOn: ('error' | 'timeout' | 'rate_limit')[];
135
+ }
136
+
137
+ type ScanType = 'vulnerability' | 'prompt_analysis' | 'system_prompt_audit' | 'configuration_review' | 'comprehensive';
138
+ type ScanStatus = 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';
139
+ type VulnerabilityCategory = 'injection' | 'authentication' | 'authorization' | 'data_exposure' | 'misconfiguration' | 'insecure_design' | 'output_handling' | 'supply_chain' | 'model_theft' | 'custom';
140
+ interface Vulnerability {
141
+ id: string;
142
+ name: string;
143
+ description: string;
144
+ category: VulnerabilityCategory;
145
+ severity: Severity;
146
+ cvssScore?: number;
147
+ cweId?: string;
148
+ owaspMapping?: string;
149
+ affectedComponent: string;
150
+ attackVector?: string;
151
+ exploitability: 'easy' | 'moderate' | 'difficult' | 'theoretical';
152
+ impact: string;
153
+ remediation: string;
154
+ references?: string[];
155
+ evidence?: VulnerabilityEvidence[];
156
+ firstDetected: number;
157
+ lastSeen: number;
158
+ status: 'open' | 'confirmed' | 'in_progress' | 'resolved' | 'accepted_risk' | 'false_positive';
159
+ }
160
+ interface VulnerabilityEvidence {
161
+ type: 'request' | 'response' | 'log' | 'screenshot' | 'test_result' | 'custom';
162
+ description: string;
163
+ content: string;
164
+ timestamp: number;
165
+ }
166
+ interface ScanConfig {
167
+ type: ScanType;
168
+ target: ScanTarget;
169
+ attackCategories?: AttackCategory[];
170
+ includeAttacks?: string[];
171
+ excludeAttacks?: string[];
172
+ minSeverity?: Severity;
173
+ maxDuration?: number;
174
+ parallel?: boolean;
175
+ maxParallel?: number;
176
+ stopOnFirstFinding?: boolean;
177
+ authentication?: ScanAuthentication;
178
+ rateLimit?: RateLimitConfig;
179
+ onProgress?: (progress: ScanProgress) => void;
180
+ onFinding?: (vulnerability: Vulnerability) => void;
181
+ }
182
+ interface ScanTarget {
183
+ type: 'agent' | 'endpoint' | 'model' | 'prompt' | 'system';
184
+ identifier: string;
185
+ name?: string;
186
+ model?: string;
187
+ systemPrompt?: string;
188
+ headers?: Record<string, string>;
189
+ metadata?: Record<string, unknown>;
190
+ }
191
+ interface ScanAuthentication {
192
+ type: 'api_key' | 'bearer' | 'basic' | 'oauth' | 'custom';
193
+ credentials: Record<string, string>;
194
+ headerName?: string;
195
+ }
196
+ interface RateLimitConfig {
197
+ requestsPerSecond: number;
198
+ burstSize?: number;
199
+ retryOnRateLimit?: boolean;
200
+ maxRetries?: number;
201
+ }
202
+ interface ScanResult {
203
+ id: string;
204
+ type: ScanType;
205
+ target: ScanTarget;
206
+ status: ScanStatus;
207
+ vulnerabilities: Vulnerability[];
208
+ summary: ScanSummary;
209
+ testResults?: TestSuiteResult;
210
+ metadata: ScanMetadata;
211
+ error?: string;
212
+ }
213
+ interface ScanSummary {
214
+ totalTests: number;
215
+ testsPassed: number;
216
+ testsFailed: number;
217
+ vulnerabilitiesFound: number;
218
+ bySeverity: Record<Severity, number>;
219
+ byCategory: Record<VulnerabilityCategory, number>;
220
+ riskScore: number;
221
+ riskLevel: 'critical' | 'high' | 'medium' | 'low' | 'minimal';
222
+ }
223
+ interface ScanMetadata {
224
+ startTime: number;
225
+ endTime: number;
226
+ durationMs: number;
227
+ scannerVersion: string;
228
+ configuration: Partial<ScanConfig>;
229
+ environment?: string;
230
+ }
231
+ interface ScanProgress {
232
+ scanId: string;
233
+ phase: 'initializing' | 'scanning' | 'analyzing' | 'reporting' | 'completed';
234
+ currentTest?: string;
235
+ testsCompleted: number;
236
+ totalTests: number;
237
+ percentage: number;
238
+ vulnerabilitiesFound: number;
239
+ elapsedMs: number;
240
+ estimatedRemainingMs?: number;
241
+ }
242
+ interface PromptAnalysisConfig {
243
+ prompt: string;
244
+ analysisTypes: PromptAnalysisType[];
245
+ checkInjections?: boolean;
246
+ checkSensitiveData?: boolean;
247
+ useLLM?: boolean;
248
+ model?: string;
249
+ }
250
+ type PromptAnalysisType = 'structure' | 'security' | 'quality' | 'effectiveness' | 'bias' | 'clarity' | 'completeness';
251
+ interface PromptAnalysisResult {
252
+ prompt: string;
253
+ overallScore: number;
254
+ analyses: Record<PromptAnalysisType, PromptTypeAnalysis>;
255
+ issues: PromptIssue[];
256
+ suggestions: PromptSuggestion[];
257
+ securityAssessment?: PromptSecurityAssessment;
258
+ processingTimeMs: number;
259
+ }
260
+ interface PromptTypeAnalysis {
261
+ score: number;
262
+ findings: string[];
263
+ strengths?: string[];
264
+ weaknesses?: string[];
265
+ }
266
+ interface PromptIssue {
267
+ type: 'security' | 'quality' | 'clarity' | 'bias' | 'effectiveness';
268
+ severity: Severity;
269
+ description: string;
270
+ location?: {
271
+ start: number;
272
+ end: number;
273
+ };
274
+ recommendation: string;
275
+ }
276
+ interface PromptSuggestion {
277
+ type: 'improvement' | 'alternative' | 'addition' | 'removal';
278
+ description: string;
279
+ currentText?: string;
280
+ suggestedText?: string;
281
+ expectedImprovement: string;
282
+ priority: 'high' | 'medium' | 'low';
283
+ }
284
+ interface PromptSecurityAssessment {
285
+ securityScore: number;
286
+ injectionVulnerability: number;
287
+ dataLeakageRisk: number;
288
+ jailbreakSusceptibility: number;
289
+ detectedPatterns: SecurityPattern[];
290
+ recommendations: string[];
291
+ }
292
+ interface SecurityPattern {
293
+ name: string;
294
+ risk: Severity;
295
+ description: string;
296
+ location?: {
297
+ start: number;
298
+ end: number;
299
+ };
300
+ }
301
+ interface SystemPromptAuditConfig {
302
+ systemPrompt: string;
303
+ categories: SystemPromptAuditCategory[];
304
+ compareBestPractices?: boolean;
305
+ testVulnerabilities?: boolean;
306
+ generateImproved?: boolean;
307
+ }
308
+ type SystemPromptAuditCategory = 'security' | 'clarity' | 'boundaries' | 'consistency' | 'completeness' | 'safety' | 'instruction_hierarchy';
309
+ interface SystemPromptAuditResult {
310
+ systemPrompt: string;
311
+ overallScore: number;
312
+ categoryScores: Record<SystemPromptAuditCategory, number>;
313
+ issues: SystemPromptIssue[];
314
+ vulnerabilities: Vulnerability[];
315
+ bestPracticeViolations?: BestPracticeViolation[];
316
+ improvedVersion?: string;
317
+ improvementExplanation?: string;
318
+ }
319
+ interface SystemPromptIssue {
320
+ category: SystemPromptAuditCategory;
321
+ severity: Severity;
322
+ description: string;
323
+ location?: {
324
+ start: number;
325
+ end: number;
326
+ };
327
+ suggestion: string;
328
+ }
329
+ interface BestPracticeViolation {
330
+ practice: string;
331
+ description: string;
332
+ impact: string;
333
+ recommendation: string;
334
+ reference?: string;
335
+ }
336
+
337
+ type ScheduleFrequency = 'hourly' | 'daily' | 'weekly' | 'monthly' | 'on_deploy' | 'on_change' | 'custom';
338
+ type RunStatus = 'scheduled' | 'running' | 'completed' | 'failed' | 'cancelled' | 'skipped';
339
+ type AlertSeverity = 'critical' | 'warning' | 'info';
340
+ interface ContinuousTestingConfig {
341
+ enabled: boolean;
342
+ testSuites: string[];
343
+ scans?: string[];
344
+ benchmarks?: string[];
345
+ complianceChecks?: string[];
346
+ schedule: ScheduleConfig;
347
+ triggers?: TriggerConfig[];
348
+ alerts: AlertConfig;
349
+ retention?: RetentionConfig;
350
+ parallel?: boolean;
351
+ maxParallel?: number;
352
+ failThreshold?: FailThreshold;
353
+ }
354
+ interface ScheduleConfig {
355
+ frequency: ScheduleFrequency;
356
+ cronExpression?: string;
357
+ timeOfDay?: string;
358
+ daysOfWeek?: number[];
359
+ dayOfMonth?: number;
360
+ timezone?: string;
361
+ skipIfRunning?: boolean;
362
+ maxDuration?: number;
363
+ }
364
+ interface TriggerConfig {
365
+ type: 'webhook' | 'git_push' | 'pr_merge' | 'deployment' | 'schedule' | 'manual' | 'api';
366
+ name: string;
367
+ enabled: boolean;
368
+ conditions?: TriggerCondition[];
369
+ webhookUrl?: string;
370
+ webhookSecret?: string;
371
+ branchFilter?: string[];
372
+ metadata?: Record<string, unknown>;
373
+ }
374
+ interface TriggerCondition {
375
+ field: string;
376
+ operator: 'equals' | 'not_equals' | 'contains' | 'matches' | 'greater' | 'less';
377
+ value: string | number | boolean;
378
+ }
379
+ interface AlertConfig {
380
+ enabled: boolean;
381
+ channels: AlertChannel[];
382
+ rules: AlertRule[];
383
+ quietHours?: QuietHours;
384
+ grouping?: AlertGrouping;
385
+ escalation?: EscalationPolicy;
386
+ }
387
+ interface AlertChannel {
388
+ id: string;
389
+ type: 'email' | 'slack' | 'webhook' | 'pagerduty' | 'teams' | 'discord' | 'custom';
390
+ name: string;
391
+ enabled: boolean;
392
+ config: AlertChannelConfig;
393
+ severities: AlertSeverity[];
394
+ }
395
+ interface AlertChannelConfig {
396
+ emails?: string[];
397
+ webhookUrl?: string;
398
+ slackChannel?: string;
399
+ apiKey?: string;
400
+ headers?: Record<string, string>;
401
+ template?: string;
402
+ settings?: Record<string, unknown>;
403
+ }
404
+ interface AlertRule {
405
+ id: string;
406
+ name: string;
407
+ description?: string;
408
+ enabled: boolean;
409
+ condition: AlertCondition;
410
+ severity: AlertSeverity;
411
+ channelIds: string[];
412
+ throttleMs?: number;
413
+ autoResolve?: boolean;
414
+ tags?: string[];
415
+ }
416
+ interface AlertCondition {
417
+ type: 'threshold' | 'change' | 'pattern' | 'anomaly' | 'custom';
418
+ metric: string;
419
+ operator: 'greater' | 'less' | 'equals' | 'not_equals' | 'between' | 'outside';
420
+ value: number | number[];
421
+ windowMs?: number;
422
+ consecutiveCount?: number;
423
+ customEvaluator?: string;
424
+ }
425
+ interface QuietHours {
426
+ enabled: boolean;
427
+ startTime: string;
428
+ endTime: string;
429
+ daysOfWeek: number[];
430
+ timezone?: string;
431
+ overrideForCritical?: boolean;
432
+ }
433
+ interface AlertGrouping {
434
+ enabled: boolean;
435
+ groupBy: string[];
436
+ windowMs: number;
437
+ maxAlertsPerGroup?: number;
438
+ }
439
+ interface EscalationPolicy {
440
+ enabled: boolean;
441
+ levels: EscalationLevel[];
442
+ }
443
+ interface EscalationLevel {
444
+ level: number;
445
+ delayMs: number;
446
+ channelIds: string[];
447
+ repeatIntervalMs?: number;
448
+ maxRepeats?: number;
449
+ }
450
+ interface RetentionConfig {
451
+ retentionDays: number;
452
+ summaryRetentionDays?: number;
453
+ archive?: boolean;
454
+ archiveLocation?: string;
455
+ }
456
+ interface FailThreshold {
457
+ maxCritical?: number;
458
+ maxHigh?: number;
459
+ minPassRate?: number;
460
+ minComplianceScore?: number;
461
+ minBenchmarkScore?: number;
462
+ }
463
+ interface TestRun {
464
+ id: string;
465
+ name?: string;
466
+ status: RunStatus;
467
+ trigger: TriggerConfig['type'];
468
+ triggeredBy?: string;
469
+ startTime: number;
470
+ endTime?: number;
471
+ durationMs?: number;
472
+ testResults?: TestSuiteResult[];
473
+ scanResults?: ScanResult[];
474
+ benchmarkResults?: BenchmarkResult[];
475
+ complianceResults?: ComplianceCheckResult[];
476
+ summary?: RunSummary;
477
+ alerts?: Alert[];
478
+ error?: string;
479
+ metadata?: Record<string, unknown>;
480
+ }
481
+ interface RunSummary {
482
+ overallStatus: 'passed' | 'failed' | 'warning' | 'error';
483
+ tests?: {
484
+ total: number;
485
+ passed: number;
486
+ failed: number;
487
+ skipped: number;
488
+ };
489
+ vulnerabilities?: {
490
+ total: number;
491
+ bySeverity: Record<Severity, number>;
492
+ };
493
+ benchmarks?: {
494
+ averageScore: number;
495
+ passed: number;
496
+ failed: number;
497
+ };
498
+ compliance?: {
499
+ averageScore: number;
500
+ compliant: number;
501
+ nonCompliant: number;
502
+ };
503
+ comparison?: {
504
+ testsDelta: number;
505
+ vulnerabilitiesDelta: number;
506
+ benchmarkDelta: number;
507
+ complianceDelta: number;
508
+ trend: 'improved' | 'degraded' | 'stable';
509
+ };
510
+ }
511
+ interface Alert {
512
+ id: string;
513
+ ruleId: string;
514
+ ruleName: string;
515
+ severity: AlertSeverity;
516
+ status: 'triggered' | 'acknowledged' | 'resolved' | 'suppressed';
517
+ title: string;
518
+ message: string;
519
+ details?: Record<string, unknown>;
520
+ triggeredAt: number;
521
+ acknowledgedAt?: number;
522
+ acknowledgedBy?: string;
523
+ resolvedAt?: number;
524
+ resolvedBy?: string;
525
+ resolutionNotes?: string;
526
+ runId?: string;
527
+ notificationHistory: NotificationRecord[];
528
+ }
529
+ interface NotificationRecord {
530
+ channelId: string;
531
+ channelType: AlertChannel['type'];
532
+ sentAt: number;
533
+ status: 'sent' | 'failed' | 'bounced';
534
+ error?: string;
535
+ }
536
+ interface ScheduleStatus {
537
+ nextRun?: number;
538
+ lastRun?: TestRun;
539
+ isRunning: boolean;
540
+ currentRunId?: string;
541
+ runsToday: number;
542
+ activeAlerts: number;
543
+ }
544
+ interface HistoricalMetrics {
545
+ timeRange: {
546
+ start: number;
547
+ end: number;
548
+ };
549
+ dataPoints: MetricDataPoint[];
550
+ aggregations: {
551
+ mean: number;
552
+ median: number;
553
+ min: number;
554
+ max: number;
555
+ stdDev: number;
556
+ };
557
+ trends: {
558
+ direction: 'up' | 'down' | 'stable';
559
+ changePercent: number;
560
+ significance: 'high' | 'medium' | 'low';
561
+ };
562
+ }
563
+ interface MetricDataPoint {
564
+ timestamp: number;
565
+ value: number;
566
+ runId?: string;
567
+ metadata?: Record<string, unknown>;
568
+ }
569
+ interface DashboardSummary {
570
+ currentStatus: 'healthy' | 'warning' | 'critical' | 'unknown';
571
+ lastRun?: TestRun;
572
+ nextRun?: number;
573
+ activeAlerts: Alert[];
574
+ recentRuns: TestRun[];
575
+ metrics: {
576
+ passRate: HistoricalMetrics;
577
+ vulnerabilities: HistoricalMetrics;
578
+ benchmarkScores: HistoricalMetrics;
579
+ complianceScores: HistoricalMetrics;
580
+ };
581
+ trends: {
582
+ overall: 'improving' | 'stable' | 'degrading';
583
+ security: 'improving' | 'stable' | 'degrading';
584
+ compliance: 'improving' | 'stable' | 'degrading';
585
+ };
586
+ }
587
+
588
+ export type { EscalationPolicy as $, PromptSuggestion as A, PromptSecurityAssessment as B, SecurityPattern as C, SystemPromptAuditConfig as D, SystemPromptAuditCategory as E, SystemPromptAuditResult as F, SystemPromptIssue as G, BestPracticeViolation as H, ScheduleFrequency as I, RunStatus as J, AlertSeverity as K, ContinuousTestingConfig as L, ScheduleConfig as M, TriggerConfig as N, TriggerCondition as O, PromptAnalysisConfig as P, AlertConfig as Q, RetryPolicy as R, ScanType as S, TestStatus as T, AlertChannel as U, VulnerabilityCategory as V, AlertChannelConfig as W, AlertRule as X, AlertCondition as Y, QuietHours as Z, AlertGrouping as _, TestResultOutcome as a, EscalationLevel as a0, RetentionConfig as a1, FailThreshold as a2, TestRun as a3, RunSummary as a4, Alert as a5, NotificationRecord as a6, ScheduleStatus as a7, HistoricalMetrics as a8, MetricDataPoint as a9, DashboardSummary as aa, TestCase as b, TestCaseResult as c, TestSuiteConfig as d, TestSuiteResult as e, TestSummary as f, TestRunConfig as g, TargetInfo as h, TestReporter as i, TestProgress as j, TestAssertion as k, ScanStatus as l, Vulnerability as m, VulnerabilityEvidence as n, ScanConfig as o, ScanTarget as p, ScanAuthentication as q, RateLimitConfig as r, ScanResult as s, ScanSummary as t, ScanMetadata as u, ScanProgress as v, PromptAnalysisType as w, PromptAnalysisResult as x, PromptTypeAnalysis as y, PromptIssue as z };