Spaces:
Paused
Paused
File size: 4,637 Bytes
d958e80 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 | from __future__ import annotations
from dataclasses import dataclass, field
from datetime import datetime
from enum import Enum
from typing import Any, Optional, List, Dict
class WorkerRuntimeType(str, Enum):
SAFARI_WASM = "safari_wasm"
SAFARI_WEBGPU = "safari_webgpu"
NATIVE_COREML = "native_coreml"
NATIVE_MLX = "native_mlx"
NATIVE_LLAMACPP = "native_llamacpp"
class JobType(str, Enum):
TEXT_EMBEDDING = "text_embedding"
IMAGE_CLASSIFICATION = "image_classification"
IMAGE_EMBEDDING = "image_embedding"
LOCAL_OCR = "local_ocr"
AUDIO_TRANSCRIPTION = "audio_transcription"
SMALL_LLM_GENERATE = "small_llm_generate"
PRIVACY_REDACTION = "privacy_redaction"
SENSOR_CLASSIFICATION = "sensor_classification"
class JobStatus(str, Enum):
QUEUED = "queued"
ASSIGNED = "assigned"
RUNNING = "running"
COMPLETED = "completed"
FAILED = "failed"
EXPIRED = "expired"
REJECTED = "rejected"
class PrivacyMode(str, Enum):
RAW_INPUT_REMOTE = "raw_input_remote"
HASH_ONLY_REMOTE = "hash_only_remote"
LOCAL_ONLY_RESULT_ONLY = "local_only_result_only"
LOCAL_ONLY_REDACTED_RESULT = "local_only_redacted_result"
@dataclass
class DeviceCapability:
capability_name: str
runtime_type: WorkerRuntimeType
model_id: Optional[str] = None
model_hash: Optional[str] = None
quantization: Optional[str] = None
max_input_bytes: Optional[int] = None
estimated_latency_ms: Optional[int] = None
@dataclass
class WorkerState:
worker_id: str
session_id: str
runtime_type: WorkerRuntimeType
capabilities: List[DeviceCapability] = field(default_factory=list)
battery_level: Optional[float] = None
thermal_state: Optional[str] = None
network_type: Optional[str] = None
device_label_hash: Optional[str] = None
device_public_key: Optional[str] = None
joined_at: datetime = field(default_factory=datetime.utcnow)
last_heartbeat: datetime = field(default_factory=datetime.utcnow)
jobs_completed: int = 0
status: str = "active"
@dataclass
class InferenceJob:
job_id: str
session_id: str
job_type: JobType
privacy_mode: PrivacyMode
payload: Dict[str, Any]
status: JobStatus = JobStatus.QUEUED
constraints: Dict[str, Any] = field(default_factory=dict)
created_at: datetime = field(default_factory=datetime.utcnow)
queued_at: Optional[datetime] = None
assigned_at: Optional[datetime] = None
completed_at: Optional[datetime] = None
worker_id: Optional[str] = None
result: Optional[Dict[str, Any]] = None
error_reason: Optional[str] = None
@dataclass
class JobResult:
job_id: str
worker_id: str
output: Dict[str, Any]
latency_ms: int
input_hash: Optional[str] = None
output_hash: Optional[str] = None
device_signature: Optional[str] = None
privacy_mode: PrivacyMode = PrivacyMode.RAW_INPUT_REMOTE
@dataclass
class ComputeReceipt:
receipt_id: str
session_id: str
job_id: str
worker_id: str
capability: str
runtime_type: WorkerRuntimeType
job_type: JobType
privacy_mode: PrivacyMode
latency_ms: int
started_at: datetime
finished_at: datetime
model_id: Optional[str] = None
model_hash: Optional[str] = None
input_hash: Optional[str] = None
output_hash: Optional[str] = None
device_public_key: Optional[str] = None
device_signature: Optional[str] = None
server_signature: Optional[str] = None
receipt_hash: Optional[str] = None
previous_receipt_hash: Optional[str] = None
@dataclass
class ReceiptVerificationResult:
valid: bool
receipt_id: str
hash_match: bool
device_signature_valid: Optional[bool] = None
server_signature_valid: Optional[bool] = None
chain_valid: Optional[bool] = None
error: Optional[str] = None
@dataclass
class DevicePolicy:
session_id: str
allowed_job_types: List[JobType] = field(default_factory=list)
denied_job_types: List[JobType] = field(default_factory=list)
require_battery_above: float = 0.2
require_thermal_nominal: bool = True
max_concurrent_jobs: int = 1
privacy_default: PrivacyMode = PrivacyMode.RAW_INPUT_REMOTE
@dataclass
class SessionState:
session_id: str
owner_label: Optional[str] = None
secret: str = ""
created_at: datetime = field(default_factory=datetime.utcnow)
expires_at: datetime = field(default_factory=datetime.utcnow)
workers: Dict[str, WorkerState] = field(default_factory=dict)
policy: DevicePolicy = field(default_factory=lambda: DevicePolicy(session_id=""))
status: str = "active"
|