// AirCoding Runtime Package
// Main export barrel for @aircoding/runtime

// Storage layer
export { DatabaseManager, createDatabaseManager } from './storage/DatabaseManager.js'
export { MigrationRunner } from './storage/MigrationRunner.js'
export { Recovery, createRecovery } from './storage/Recovery.js'
export * from './storage/assertEnum.js'

// Project management
export { ProjectStore, createProjectStore } from './project/ProjectStore.js'
export { ProjectLocator, createProjectLocator } from './project/ProjectLocator.js'
export { ProjectInitializer, createProjectInitializer } from './project/ProjectInitializer.js'

// Session management
export { SessionManager, createSessionManager } from './sessions/SessionManager.js'

// Artifact and evidence management
export { ArtifactStore, createArtifactStore } from './artifacts/ArtifactStore.js'
export { EvidenceStore, createEvidenceStore } from './artifacts/EvidenceStore.js'

// Event system
export { EventIngestor, eventIngestor } from './events/EventIngestor.js'

// Security
export { PathClassifier, createPathClassifier } from './security/PathClassifier.js'
export { CommandRiskAnalyzer, createCommandRiskAnalyzer } from './security/CommandRiskAnalyzer.js'
export { SecretRedactor, createSecretRedactor, get_shared_redactor } from './security/SecretRedactor.js'
export { PermissionEngine, createPermissionEngine, DEFAULT_PROFILES } from './security/PermissionEngine.js'

// Tools
export { ToolRegistry, createToolRegistry } from './tools/ToolRegistry.js'
export { BuiltInToolRegistrar, register_builtin_tools } from './tools/BuiltInToolRegistrar.js'

// Capabilities
export { CapabilityManifestValidator, createCapabilityManifestValidator } from './capabilities/CapabilityManifestValidator.js'
export { CapabilityRegistry, createCapabilityRegistry } from './capabilities/CapabilityRegistry.js'

// Context
export { PromptLayerLoader, createPromptLayerLoader } from './context/PromptLayerLoader.js'
export { CompactionPolicy, createCompactionPolicy } from './context/CompactionPolicy.js'
export { ContextAssembler, createContextAssembler } from './context/ContextAssembler.js'

// Workers
export { WorkerProtocol } from './workers/WorkerProtocol.js'
export { WorkerProcess } from './workers/WorkerProcess.js'
export { WorkerManager } from './workers/WorkerManager.js'

// Scheduler
export { Scheduler } from './scheduler/Scheduler.js'
export { TaskGraph } from './scheduler/TaskGraph.js'
export { WavePlanner } from './scheduler/WavePlanner.js'
export { RetryPlanner } from './scheduler/RetryPlanner.js'
export { AgentMonitor } from './scheduler/AgentMonitor.js'
export { WorkspaceManager } from './scheduler/WorkspaceManager.js'

// Projection
export { ProjectionStore } from './projection/ProjectionStore.js'
export { ProjectionClient } from './projection/ProjectionClient.js'
export type { SessionProjection, TaskProjection, AgentProjection, ProjectionSubscriber } from './projection/ProjectionStore.js'

// Agents
export { MainAgent } from './agents/main/MainAgent.js'
export { ArchitectureDesigner } from './agents/architecture/ArchitectureDesigner.js'

// Knowledge
export { DebugKnowledgeStore } from './knowledge/DebugKnowledgeStore.js'
export { LearnedMemoryStore } from './knowledge/LearnedMemoryStore.js'

// Logging
export { Logger } from './logging/Logger.js'
export { DeveloperLogEncryptor } from './logging/DeveloperLogEncryptor.js'

// Doctor
export { DoctorService } from './doctor/DoctorService.js'

// App
export { RuntimeApp, createRuntimeApp } from './app/RuntimeApp.js'
export { ServiceRegistry } from './app/ServiceRegistry.js'
export type { ServiceGraph } from './app/ServiceRegistry.js'