| """ |
| Privacy and Security Utilities for Local-First Operation |
| |
| This package provides local-first privacy architecture with encrypted token |
| storage, local-only mode enforcement, and comprehensive audit logging. |
| |
| Modules: |
| - local_only_guard: Local-only mode enforcement for external service blocking |
| - token_encryption: Centralized Fernet-based token encryption utilities |
| - audit_logger: Structured audit logging for device/media/smarthome actions |
| |
| Usage: |
| from core.privsec import ( |
| LocalOnlyGuard, |
| require_local_allowed, |
| encrypt_token, |
| decrypt_token, |
| AuditLogger |
| ) |
| |
| # Check local-only mode |
| guard = LocalOnlyGuard() |
| if guard.is_local_only_enabled(): |
| print("Local-only mode active") |
| |
| # Encrypt token |
| encrypted = encrypt_token("my-secret-token") |
| |
| # Log action |
| audit = AuditLogger() |
| audit.log_media_action( |
| user_id="user_123", |
| agent_id="agent_456", |
| action="pause_playback", |
| service="spotify", |
| details={"device_id": "device_abc"}, |
| result="success" |
| ) |
| |
| Key Features: |
| - Local-only mode: Block all external API calls (Spotify, Notion, etc.) |
| - Encrypted storage: All tokens encrypted with Fernet at rest |
| - Audit logging: Complete audit trail for all sensitive operations |
| - Zero cloud dependencies: Everything runs locally |
| |
| Environment Variables: |
| - ATOM_LOCAL_ONLY: Enable local-only mode (true/false) |
| - BYOK_ENCRYPTION_KEY: Fernet encryption key (generate with: openssl rand -base64 32) |
| - AUDIT_LOG_PATH: Audit log file path (default: logs/audit.log) |
| - AUDIT_LOG_RETENTION_DAYS: Log retention period (default: 90) |
| """ |
|
|
| from core.privsec.local_only_guard import ( |
| LocalOnlyGuard, |
| LocalOnlyModeError, |
| require_local_allowed, |
| get_local_only_guard, |
| ) |
| from core.privsec.token_encryption import ( |
| MissingKeyError, |
| InvalidKeyError, |
| DecryptionError, |
| encrypt_token, |
| decrypt_token, |
| encrypt_api_key, |
| decrypt_api_key, |
| rotate_tokens, |
| is_encrypted_value, |
| hash_token, |
| get_encryption_key, |
| generate_encryption_key, |
| validate_encryption_key, |
| ) |
| from core.privsec.audit_logger import ( |
| AuditLogger, |
| get_audit_logger, |
| log_media_action_async, |
| log_smarthome_action_async, |
| ) |
|
|
| __all__ = [ |
| |
| "LocalOnlyGuard", |
| "LocalOnlyModeError", |
| "require_local_allowed", |
| "get_local_only_guard", |
| |
| "MissingKeyError", |
| "InvalidKeyError", |
| "DecryptionError", |
| "encrypt_token", |
| "decrypt_token", |
| "encrypt_api_key", |
| "decrypt_api_key", |
| "rotate_tokens", |
| "is_encrypted_value", |
| "hash_token", |
| "get_encryption_key", |
| "generate_encryption_key", |
| "validate_encryption_key", |
| |
| "AuditLogger", |
| "get_audit_logger", |
| "log_media_action_async", |
| "log_smarthome_action_async", |
| ] |
|
|
| |
| __version__ = "1.0.0" |
| __author__ = "Atom Team" |
| __description__ = "Local-first privacy and security utilities for Personal Edition" |
|
|