1#![forbid(unsafe_code)]
13#![deny(rustdoc::broken_intra_doc_links)]
14
15#[cfg(all(feature = "legacy-scanner", panic = "abort"))]
16const _: () = panic!(
17 "the legacy-scanner feature requires panic=unwind so panics while polling phase execution become typed run failures"
18);
19
20#[cfg(all(feature = "plugins", panic = "abort"))]
21const _: () = panic!(
22 "the plugins feature requires panic=unwind so plugin panics become typed invocation failures"
23);
24
25#[cfg(feature = "platform-models")]
27pub mod api;
28pub mod api_evidence;
29#[cfg(feature = "platform-models")]
30pub mod api_gateway;
31pub mod api_observation;
32pub mod api_reasoning;
33#[cfg(feature = "platform-models")]
34pub mod auth;
35#[cfg(feature = "platform-models")]
36pub mod cache;
37#[cfg(feature = "platform-models")]
38pub mod config;
39#[cfg(feature = "platform-models")]
40pub mod config_loader;
41#[cfg(feature = "legacy-scanner")]
42pub mod context;
43#[cfg(feature = "legacy-scanner")]
44pub mod contracts;
45#[cfg(feature = "control-reference-mapping")]
46pub mod control_reference_mapping;
47pub mod defense;
48#[cfg(feature = "legacy-scanner")]
49pub mod error;
50pub mod experience;
51#[cfg(feature = "graphql-review")]
52pub(crate) mod graphql_review;
53#[cfg(feature = "jwt-policy-review")]
54pub mod jwt_policy_review;
55#[cfg(feature = "jwt-target-acceptance-review")]
56pub mod jwt_target_acceptance;
57pub mod knowledge;
58#[cfg(feature = "legacy-scanner")]
59mod legacy_discovery;
60#[cfg(feature = "legacy-scanner")]
61pub mod logging;
62#[cfg(any(feature = "platform-models", feature = "lua"))]
63mod lua_config;
64#[cfg(feature = "platform-models")]
65pub mod metrics;
66#[cfg(feature = "oast-native-provider")]
67pub(crate) mod native_oast_provider;
68#[cfg(feature = "oast-correlation")]
69pub mod oast;
70pub mod openapi_review;
71pub mod payload_strategies;
72pub mod payload_strategy;
73pub mod planner;
74#[cfg(feature = "recon-ct-provider")]
75pub mod recon_ct_provider;
76#[cfg(feature = "recon-snapshot-import")]
77pub mod recon_snapshot;
78#[cfg(feature = "rest-review")]
79pub mod rest_review;
80pub mod rules;
81pub mod semantic;
82#[cfg(feature = "ssrf-oast-review")]
83pub mod ssrf_oast_review;
84#[cfg(feature = "supplied-session-review")]
85pub mod supplied_session_review;
86#[cfg(feature = "template-evaluation-review")]
87pub mod template_evaluation_review;
88pub mod verification;
89pub mod web_actions;
90pub mod web_planning;
91pub mod web_reasoning;
92pub mod web_verification;
93#[cfg(feature = "websocket-review")]
94pub mod websocket_review;
95#[cfg(feature = "wordpress-review")]
96pub mod wordpress_review;
97mod wordpress_version;
98#[cfg(feature = "xml-external-entity-review")]
99pub mod xml_external_entity_review;
100
101pub use semantic::{
102 AuthArtifactKind, EntityExtractor, LimitsError, SemanticEntity, SemanticEntityType,
103 SemanticExtractionLimits, SemanticExtractionResult,
104};
105
106#[cfg(feature = "legacy-scanner")]
108pub mod phases;
109
110#[cfg(feature = "legacy-scanner")]
111pub mod runner;
112
113#[cfg(feature = "legacy-scanner")]
114pub mod sdk;
115
116#[cfg(feature = "scanning")]
117pub mod adaptive;
118
119#[cfg(feature = "scanning")]
120pub mod authorization_review;
121
122#[cfg(feature = "scanning")]
123pub mod decision_loop;
124
125#[cfg(feature = "scanning")]
126pub mod decision_runner;
127
128#[cfg(feature = "scanning")]
129pub mod http_evidence;
130
131#[cfg(feature = "scanning")]
132pub mod runtime_budget;
133
134#[cfg(feature = "scanning")]
135pub mod web_execution;
136
137#[cfg(feature = "scanning")]
138pub mod web_decision;
139
140#[cfg(feature = "scanning")]
141pub mod web_runtime;
142
143#[cfg(feature = "scanning")]
144impl web_runtime::BuiltInScanProfile {
145 pub fn parse_id(
147 value: &str,
148 ) -> std::result::Result<Self, web_runtime::BuiltInScanProfileParseError> {
149 match value {
150 web_runtime::BASELINE_SCAN_PROFILE_ID => Ok(Self::Baseline),
151 web_runtime::WEB_REVIEW_SCAN_PROFILE_ID => Ok(Self::WebReview),
152 _ => Err(web_runtime::BuiltInScanProfileParseError),
153 }
154 }
155}
156
157#[cfg(feature = "detection")]
159pub mod advanced_detection;
160
161#[cfg(feature = "detection")]
162pub mod anomaly;
163
164#[cfg(feature = "ml")]
166pub mod ml;
167
168#[cfg(feature = "distributed")]
170mod distributed;
171
172#[cfg(feature = "monitoring")]
174pub mod monitoring;
175
176#[cfg(feature = "compliance")]
178pub mod compliance;
179
180#[cfg(feature = "threat-intel")]
182pub mod threat_intelligence;
183
184#[cfg(feature = "platform-models")]
186pub mod post_exploitation;
187
188#[cfg(feature = "plugins")]
190pub mod plugin;
191
192#[cfg(feature = "lua")]
193mod lua_engine;
194
195#[cfg(feature = "platform-models")]
196pub mod persistence;
197
198#[cfg(feature = "reporting")]
199pub mod reporting;
200
201#[cfg(feature = "platform-models")]
202pub mod realtime;
203
204#[cfg(feature = "platform-models")]
205pub mod dashboard;
206
207#[cfg(feature = "legacy-scanner")]
209pub mod event_bus;
210
211#[cfg(feature = "platform-models")]
213pub use api::{
214 ApiError, ApiResponse, ScanResultResponse, ScanStatus, ScanStatusType, StartScanRequest,
215};
216pub use api_evidence::{
217 ApiComparisonProfile, ApiVisibilityComparator, ApiVisibilityEvidenceError, ApiVisibilityLimits,
218 ApiVisibilityView, CanonicalizationVersion, ComparisonAlgorithmVersion, JsonPathPattern,
219 PathDigest, ProfiledApiVisibilityComparison, ProfiledApiVisibilityError,
220 ProfiledApiVisibilityView, ProjectionPolicyId, RedactedVisibilityDiff,
221 VisibilityExplanationDisposition, CURRENT_API_COMPARISON_ALGORITHM_VERSION,
222 CURRENT_API_VISIBILITY_CANONICALIZATION_VERSION, DEFAULT_API_VISIBILITY_CANONICAL_BYTES,
223 DEFAULT_API_VISIBILITY_DEPTH, DEFAULT_API_VISIBILITY_DIFF_PATHS, DEFAULT_API_VISIBILITY_FIELDS,
224 DEFAULT_API_VISIBILITY_NODES, HARD_MAX_API_COMPARISON_PATH_BYTES,
225 HARD_MAX_API_COMPARISON_PATH_DEPTH, HARD_MAX_API_COMPARISON_PROFILE_PATHS,
226 HARD_MAX_API_VISIBILITY_CANONICAL_BYTES, HARD_MAX_API_VISIBILITY_DEPTH,
227 HARD_MAX_API_VISIBILITY_DIFF_PATHS, HARD_MAX_API_VISIBILITY_FIELDS,
228 HARD_MAX_API_VISIBILITY_NODES,
229};
230#[cfg(feature = "platform-models")]
231pub use api_gateway::{ApiQuota, RateLimitPolicy, RateLimitStatus, RateLimitStrategy, RouteConfig};
232pub use api_observation::{
233 api_visibility_reviews_for_resource, api_visibility_reviews_for_resource_v2,
234 ingest_api_visibility_observation, ApiObservationCommitReceipt, ApiObservationError,
235 ApiObservationReceipt, ApiVisibilityReview, ApiVisibilityReviewCursor,
236 ApiVisibilityReviewDisposition, ApiVisibilityReviewPage, ApiVisibilityReviewQuery,
237 DEFAULT_API_VISIBILITY_REVIEW_SCAN_LIMIT, HARD_MAX_API_VISIBILITY_REVIEW_SCAN_LIMIT,
238 MAX_API_VISIBILITY_REVIEW_CURSOR_BYTES, MAX_API_VISIBILITY_REVIEW_RATIONALE_BYTES,
239 MAX_API_VISIBILITY_SOURCE_COMPONENT_BYTES,
240};
241pub use api_reasoning::{
242 StandardApiInstallReport, StandardApiReasoning, StandardApiReasoningError,
243 STANDARD_API_AXIOM_COUNT, STANDARD_API_CONCEPT_COUNT, STANDARD_API_RULE_COUNT,
244};
245#[cfg(feature = "platform-models")]
246pub use auth::{User, UserRole};
247#[cfg(feature = "platform-models")]
248pub use cache::{CacheStats, LruCache};
249#[cfg(feature = "platform-models")]
250pub use config::{ScanConfig, ScanIntensity};
251#[cfg(feature = "platform-models")]
252pub use config_loader::{ConfigLoader, ScanProfile as ScanningProfile};
253#[cfg(feature = "legacy-scanner")]
254pub use context::ScanContext;
255#[cfg(feature = "legacy-scanner")]
256pub use contracts::ScanPhase;
257pub use defense::{
258 defense_aware_plan, defense_aware_shadow_plan, DefenseAwareShadowPlan, DefenseFingerprint,
259 DefenseInteractionClass, DefenseObservationContext, DefensePlanningPolicy, DefensePosture,
260 DefenseProduct, DefenseResponse, DefenseState, DefenseStatusSignal, DefenseTransition,
261 DefenseTransitionKind, FingerprintConfidence, InteractionDecision, ObservedOutcome,
262 PlanAdjustment, PostureShift, ResourceDefenseObservation, ResourceDefenseSignal,
263 ShadowPlanDelta, SuppressedAction, MAX_FINGERPRINT_BODY_SCAN_BYTES,
264};
265#[cfg(feature = "legacy-scanner")]
266pub use error::{Result, ScannerError};
267#[cfg(feature = "legacy-scanner")]
268pub use event_bus::{Event, EventBuilder, EventBus, EventHandler, EventSeverity, EventType};
269pub use experience::{
270 ExperienceAssessment, ExperienceDisposition, ExperiencePolicy, ExperienceRecommendation,
271 ExperienceRecord, ExperienceStore, ExperienceStoreError, ExperienceWrite,
272};
273#[allow(deprecated)]
274pub use knowledge::{
275 KnowledgeBase, KnowledgeBaseError, KnowledgeBaseStats, KnowledgeRecordKind, KnowledgeSnapshot,
276 KnowledgeStore, KnowledgeStoreError, KnowledgeStoreStats, KnowledgeWrite,
277 MAX_KNOWLEDGE_RELATION_ENTITY_ID_BYTES, MAX_KNOWLEDGE_RELATION_EVIDENCE_IDS,
278 MAX_KNOWLEDGE_RELATION_EVIDENCE_ID_BYTES, MAX_KNOWLEDGE_RELATION_ID_BYTES,
279 MAX_KNOWLEDGE_RELATION_KIND_BYTES,
280};
281#[cfg(feature = "legacy-scanner")]
282pub use legacy_discovery::{
283 DiscoveryForm, DiscoveryFormMethod, DiscoveryLimits, VerificationLimits,
284};
285#[cfg(feature = "legacy-scanner")]
286pub use logging::{LogEntry, LogLevel, Logger};
287#[cfg(any(feature = "platform-models", feature = "lua"))]
288pub use lua_config::{LuaConfigError, LuaConfigViolation, LuaEngineConfig};
289#[cfg(feature = "platform-models")]
290pub use metrics::{MetricsCollector, MetricsSummary, PhaseMetrics};
291pub use payload_strategies::{
292 standard_payload_strategies, ApiAuthorizationContextPairStrategy,
293 HttpHeaderControlPairStrategy, PayloadEncoding, API_AUTHORIZATION_CONTEXT_PAIR_HEADER_NAME,
294 API_AUTHORIZATION_CONTEXT_PAIR_ID, API_AUTHORIZATION_CONTEXT_PAIR_REVISION,
295 HTTP_HEADER_CONTROL_PAIR_HEADER_NAME, HTTP_HEADER_CONTROL_PAIR_ID,
296 HTTP_HEADER_CONTROL_PAIR_REVISION,
297};
298pub use payload_strategy::{
299 PayloadArtifact, PayloadArtifactReceipt, PayloadSeed, PayloadStrategy, PayloadStrategyError,
300 PayloadStrategyLimits, PayloadStrategyRef, PayloadStrategyRegistry, PayloadVariantRole,
301 DEFAULT_MAX_PAYLOAD_ARTIFACT_BYTES, HARD_MAX_PAYLOAD_ARTIFACT_BYTES,
302 HARD_MAX_PAYLOAD_STRATEGY_ID_BYTES,
303};
304pub use planner::{
305 ActionCost, AttackAction, AttackPlan, AttackPlanner, BenefitScore, ExcludedAction,
306 ExclusionReason, HypothesisSelector, PlanStep, PlannerError, PlannerWrite, PlanningContext,
307 RequiredStrength, ResolvedVerificationTarget, RiskScore, UtilityBreakdown, UtilityScore,
308 VerificationTarget,
309};
310pub use rules::{
311 EvidenceAggregation, EvidenceCalibration, EvidenceSelector, Expression, ExpressionEvaluation,
312 ExpressionTrace, HypothesisConclusion, KnowledgeLayer, ReasoningRule, RuleApplication,
313 RuleEngine, RuleEngineError, RuleEvaluation, RuleWrite,
314};
315#[cfg(any(feature = "legacy-scanner", feature = "platform-models"))]
316pub use termivar_core::ScanFinding;
317pub use termivar_core::{
318 ApiSurfaceKind, ApiVisibilityComparison, ApiVisibilityDimension, ApiVisibilityObservation,
319 ApiVisibilityPairKind, ApiVisibilityResult, ConfidenceScore, EntityId, EvidenceKind,
320 EvidenceValue, KnowledgePredicate, Outcome, OutcomeError, OutcomeStatus, ResourceAccounting,
321 ResourceAccountingMode, RunAccounting, RunOutcomeRecord, RunReport, RunReportError,
322 RunReportInput, RunStatus, RunStepReport, RunStepStatus, RunStopCode, RunStopReason,
323 SecuritySeverity, VerificationStage, MAX_RUN_REPORT_EVIDENCE_IDS, MAX_RUN_REPORT_OUTCOMES,
324 MAX_RUN_REPORT_STEPS, MAX_RUN_REPORT_TEXT_BYTES, RUN_REPORT_SCHEMA,
325};
326pub use verification::{
327 apply_outcome, ActiveVerifier, PassiveVerifier, VerificationCase, VerificationError,
328 VerificationPipeline, VerificationPipelineReport, VerificationReport, VerificationRule,
329 VerificationRuleEvaluation, VerifierWrite,
330};
331pub use web_actions::{
332 StandardWebActionKind, STANDARD_WEB_ACTION_COUNT, STANDARD_WEB_DISCOVERY_ACTIONS,
333 STANDARD_WEB_DISCOVERY_ACTION_COUNT,
334};
335pub use web_planning::{
336 StandardWebAttackInstallReport, StandardWebAttackProfile, StandardWebPlanningError,
337};
338pub use web_reasoning::{
339 StandardWebInstallReport, StandardWebReasoning, StandardWebReasoningError,
340 STANDARD_WEB_AXIOM_COUNT, STANDARD_WEB_CONCEPT_COUNT, STANDARD_WEB_RULE_COUNT,
341};
342pub use web_verification::{
343 StandardWebVerificationError, StandardWebVerificationInstallReport,
344 StandardWebVerificationProfile, STANDARD_WEB_VERIFICATION_RULE_COUNT,
345};
346
347#[cfg(feature = "legacy-scanner")]
351pub use runner::ScanRunner;
352
353#[cfg(feature = "legacy-scanner")]
354pub use sdk::{ScannerBuilder, ScannerSdk};
355
356#[cfg(feature = "scanning")]
357pub use adaptive::{
358 AdaptationLedger, AdaptationLimits, AdaptationRule, AdaptationRuleEvaluation, AdaptiveDecision,
359 AdaptivePipeline, AdaptivePipelineError, AdaptiveRuleWrite, OutcomeSelector, PipelineDirective,
360};
361
362#[cfg(feature = "scanning")]
363pub use decision_loop::{
364 DecisionActionOrigin, DecisionLoop, DecisionLoopCommand, DecisionLoopConfig, DecisionLoopError,
365 DecisionLoopState, DecisionOutcomeReport, DecisionPlanningReport,
366 DecisionReasoningCommitReceipt, DecisionSession, DecisionSessionSummary,
367 DecisionSessionTransition, DecisionStopReason,
368};
369
370#[cfg(feature = "scanning")]
371pub use decision_runner::{
372 DecisionActionExecutor, DecisionEvidenceReceipt, DecisionExecutionClass,
373 DecisionExecutionFailureKind, DecisionExecutionFailureReceipt, DecisionExecutionLimits,
374 DecisionExecutionRequest, DecisionExecutionStage, DecisionExecutorError,
375 DecisionExecutorRegistry, DecisionRunnerAdapter, DecisionRunnerError, DecisionRunnerTurn,
376};
377
378#[cfg(feature = "scanning")]
379pub use runtime_budget::{
380 RuntimeBudget, RuntimeBudgetDimension, RuntimeLimitExceeded, RuntimeUsage,
381 TransportDispatchAudit, TransportDispatchOutcome, TransportDispatchReceipt,
382 DEFAULT_MAX_ACTIVE_VERIFICATIONS, DEFAULT_MAX_CONSECUTIVE_NO_PROGRESS_TURNS,
383 DEFAULT_MAX_REQUEST_BODY_BYTES, DEFAULT_MAX_RESPONSE_BYTES, DEFAULT_MAX_SAME_ACTION_ATTEMPTS,
384 DEFAULT_MAX_TOTAL_REQUESTS, DEFAULT_MAX_WALL_TIME_MS, HARD_MAX_TRANSPORT_DISPATCH_RECEIPTS,
385};
386
387#[cfg(feature = "scanning")]
388pub use http_evidence::{
389 HttpBodyCapture, HttpEvidenceError, HttpEvidenceExecutor, HttpEvidencePolicy,
390 HttpHeaderPayloadBinding, HttpProbe, HttpProbeMethod, HttpProbeProvider,
391 SubjectHttpProbeProvider, DEFAULT_HTTP_BODY_LIMIT, HTTP_EVIDENCE_EXECUTOR_ID,
392 MAX_HTTP_BODY_LIMIT,
393};
394
395#[cfg(feature = "scanning")]
396pub use web_execution::{
397 StandardWebDiscoveryExecutorProfile, StandardWebDiscoveryInstallReport,
398 StandardWebExecutionError, STANDARD_WEB_DISCOVERY_EXECUTOR_COUNT,
399};
400
401#[cfg(feature = "scanning")]
402pub use web_decision::{
403 StandardWebDecisionError, StandardWebDecisionInstallReport, StandardWebDecisionProfile,
404};
405
406#[cfg(feature = "scanning")]
407pub use web_runtime::{
408 ApiVisibilityContextProbe, ApiVisibilityDifferentialAudit,
409 ApiVisibilityDifferentialDisposition, ApiVisibilityDifferentialRequest,
410 ApiVisibilityDifferentialRequestError, ApiVisibilityInconclusiveReason, ApiVisibilityLeg,
411 ApiVisibilityLegReceipt, RuntimeApiVisibilityError, RuntimeApiVisibilityExecutionError,
412 RuntimeApiVisibilityRunReport, StandardWebDecisionFailureReceipt, StandardWebDecisionRunReport,
413 StandardWebDecisionRuntime, StandardWebDecisionRuntimeBuilder, StandardWebDecisionRuntimeError,
414 StandardWebDecisionRuntimeTurn,
415};
416
417#[cfg(all(feature = "scanning", feature = "tls-negotiation-review"))]
418pub use web_runtime::{
419 tls_negotiation_review_target_is_supported, WebAssessmentTlsNegotiationReviewAudit,
420 WebAssessmentTlsNegotiationReviewCell, TLS_NEGOTIATION_REVIEW_ACTION_TLS12,
421 TLS_NEGOTIATION_REVIEW_ACTION_TLS13, TLS_NEGOTIATION_REVIEW_AUDIT_SCHEMA,
422 TLS_NEGOTIATION_REVIEW_CAPABILITY_ID, TLS_NEGOTIATION_REVIEW_POLICY_ID,
423};
424
425#[cfg(all(feature = "scanning", feature = "plugins"))]
426pub use decision_runner::{PluginDecisionExecutor, PluginExecutionRequestProvider};
427
428#[cfg(feature = "platform-models")]
429pub use persistence::{
430 ColumnDef, EndpointRecord, EntityType, FindingRecord, IndexDef, ScanRecord, SchemaManager,
431 TableSchema,
432};
433
434#[cfg(feature = "platform-models")]
435pub use post_exploitation::{AssessmentObservation, ObservationDisposition};
436
437#[cfg(feature = "reporting")]
438pub use reporting::{
439 ReportError, ReportFormat, ReportGenerator, MAX_RENDERED_REPORT_BYTES, REPORT_DOCUMENT_SCHEMA,
440};
441
442#[cfg(feature = "platform-models")]
443pub use realtime::{EventStream, RealtimeEvent, RealtimeEventValidationError, Subscription};
444
445#[cfg(feature = "platform-models")]
446pub use dashboard::{
447 DashboardConfig, DashboardOverview, FindingCard, FindingStatus, ScanCard, WidgetType,
448};
449
450#[cfg(feature = "detection")]
452pub use advanced_detection::{
453 BehaviorIndicator, BehavioralAnalysisData, BehavioralSignature,
454 BehavioralSignatureValidationError, CatalogRecordError, ComparisonOperator, IndicatorType,
455 TechniqueCatalog, TechniqueCategory, TechniqueRecord, TransformationRule,
456 TransformationRuleCatalog, TransformationType,
457};
458
459#[cfg(feature = "detection")]
460pub use anomaly::{
461 DeviationDimension, ErrorKeywordMatcher, ResponseDeviation, ResponseDeviationValidationError,
462};
463
464#[cfg(feature = "ml")]
466pub use ml::{
467 AnomalyPattern, AnomalyType, ClusterResult, ExploitStage, ExploitationChain,
468 MlRecordValidationError, VulnerabilityPattern,
469};
470
471#[cfg(feature = "distributed")]
473pub use distributed::{
474 AggregatedResult, CancellationOutcome, CompletionOutcome, CompletionReceipt, DistributedError,
475 DistributedLimits, FailureOutcome, QueuedTaskFence, RecoverySummary, ResultAggregator,
476 ResultLimits, ScanTask, StartOutcome, StateSnapshot, StoreResultOutcome, TaskLease,
477 TaskOwnership, TaskPriority, TaskQueue, TaskSpec, TaskStatus, Transition, WorkerNode,
478 WorkerObservation, WorkerPool, WorkerSpec, WorkerStatus, WorkerTag, MAX_ACTIVE_TASKS,
479 MAX_AGGREGATE_ITEMS, MAX_HEARTBEAT_TIMEOUT_SECS, MAX_IDENTIFIER_BYTES, MAX_LEASE_TTL_SECS,
480 MAX_RESULTS, MAX_RESULT_BYTES, MAX_RETRIES, MAX_TARGET_REF_BYTES, MAX_TASK_PHASES,
481 MAX_TASK_RECORDS, MAX_TASK_TTL_SECS, MAX_TOTAL_RESULT_BYTES, MAX_WORKERS, MAX_WORKER_CAPACITY,
482 MAX_WORKER_TAGS, UTILIZATION_BASIS_POINTS,
483};
484
485#[cfg(feature = "monitoring")]
487pub use monitoring::{
488 BenchmarkResult, BenchmarkSuite, CountComparison, DurationComparison, PerformanceAnalyzer,
489 PhaseProfile, ResourceMetrics, ScanComparison, ScanProfile,
490};
491
492#[cfg(feature = "compliance")]
494pub use compliance::{
495 AuditEventType, AuditLogEntry, AuditTrail, ComplianceAssessment, ComplianceCatalog,
496 ComplianceFramework, ComplianceReport, ComplianceReportCatalog, ComplianceRequirement,
497 DataClassification, DataProtectionCatalog, DataProtectionRecord,
498};
499
500#[cfg(feature = "threat-intel")]
502pub use threat_intelligence::{
503 AlertAction, AlertEvaluation, AlertRule, AlertRuleCatalog, CVERecord, CveCatalog,
504 InvalidCvssScore, ThreatActorCatalog, ThreatActorProfile, ThreatFeedCatalog, ThreatFeedEntry,
505 ThreatFeedSource, ThreatSeverity,
506};
507
508#[cfg(feature = "plugins")]
510pub use plugin::{
511 Plugin, PluginBudget, PluginCategory, PluginConfig, PluginContext, PluginError,
512 PluginExecutionRequest, PluginExecutionResult, PluginHttpMethod, PluginHttpRequest,
513 PluginHttpResponse, PluginMetadata, PluginObservation, PluginRedactionPolicy, PluginRegistry,
514 PluginRequestBroker, PluginUsage, SecretRedactionPolicy, PLUGIN_API_VERSION,
515};
516
517#[cfg(feature = "lua")]
518pub use lua_engine::{
519 LuaCancellationToken, LuaContext, LuaExecutionError, LuaExecutionReceipt, LuaExecutionResult,
520 LuaExecutionStatus, LuaRegistrationError, LuaRegistryError, LuaReturnValue, LuaScript,
521 LuaScriptManifest, LuaScriptRegistry, ScriptCategory,
522};