Skip to main content

termivar_scanner/
lib.rs

1//! Deterministic evidence, reasoning, planning, execution, and verification for
2//! Termivar's scanner runtime.
3//!
4//! The default `scanning` feature contains the bounded decision runtime used by
5//! `termivar scan`. The historical ordered phase runner and Scanner SDK are
6//! available only through the non-default `legacy-scanner` feature. Native
7//! plugins remain a separate source-level Preview contract under `plugins`.
8//!
9//! [`KnowledgeBase`] separates ontology, instance knowledge, and observations
10//! without coupling evidence producers to decision policy.
11
12#![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// Deterministic core modules
26#[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// Historical ordered scanner (feature: legacy-scanner)
107#[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    /// Parses an exact, case-sensitive built-in identifier without trimming.
146    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// Experimental detection and deviation records (feature: detection)
158#[cfg(feature = "detection")]
159pub mod advanced_detection;
160
161#[cfg(feature = "detection")]
162pub mod anomaly;
163
164// External-model record types only (feature: ml)
165#[cfg(feature = "ml")]
166pub mod ml;
167
168// Experimental bounded in-process coordinator (feature: distributed)
169#[cfg(feature = "distributed")]
170mod distributed;
171
172// Caller-supplied measurement records (feature: monitoring)
173#[cfg(feature = "monitoring")]
174pub mod monitoring;
175
176// Compliance and audit record catalogs (feature: compliance)
177#[cfg(feature = "compliance")]
178pub mod compliance;
179
180// Offline threat record catalogs (feature: threat-intel)
181#[cfg(feature = "threat-intel")]
182pub mod threat_intelligence;
183
184// Unwired platform models (feature: platform-models)
185#[cfg(feature = "platform-models")]
186pub mod post_exploitation;
187
188// Plugin system (feature: plugins)
189#[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// Historical host event bus (legacy scanner only)
208#[cfg(feature = "legacy-scanner")]
209pub mod event_bus;
210
211// Opt-in platform-model exports
212#[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// Historical ordered scanner exports (feature: legacy-scanner)
348// Note: phases module is re-exported automatically
349
350#[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// Experimental detection and deviation record exports (feature: detection)
451#[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// External-model record exports (feature: ml)
465#[cfg(feature = "ml")]
466pub use ml::{
467    AnomalyPattern, AnomalyType, ClusterResult, ExploitStage, ExploitationChain,
468    MlRecordValidationError, VulnerabilityPattern,
469};
470
471// Deterministic in-process coordination exports (feature: distributed)
472#[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// Monitoring exports (feature: monitoring)
486#[cfg(feature = "monitoring")]
487pub use monitoring::{
488    BenchmarkResult, BenchmarkSuite, CountComparison, DurationComparison, PerformanceAnalyzer,
489    PhaseProfile, ResourceMetrics, ScanComparison, ScanProfile,
490};
491
492// Compliance exports (feature: compliance)
493#[cfg(feature = "compliance")]
494pub use compliance::{
495    AuditEventType, AuditLogEntry, AuditTrail, ComplianceAssessment, ComplianceCatalog,
496    ComplianceFramework, ComplianceReport, ComplianceReportCatalog, ComplianceRequirement,
497    DataClassification, DataProtectionCatalog, DataProtectionRecord,
498};
499
500// Threat intelligence exports (feature: threat-intel)
501#[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// Plugin system exports (feature: plugins)
509#[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};