omicverse.jarvis.runtime¶
source package omicverse.jarvis.runtime
Shared message runtime for JARVIS channel adapters.
Classes
-
AgentBridgeExecutionAdapter — Execution shim that preserves the current AgentBridge behavior.
-
MessagePolicy — Decide whether an incoming message starts work or joins the queue.
-
MessageRouter — Resolve runtime conversation routes into Jarvis sessions.
source class AgentBridgeExecutionAdapter()
source async method AgentBridgeExecutionAdapter.run(self, session: Any, request: str, *, adata: Optional[Any], callbacks: ExecutionCallbacks) → AgentRunResult
source dataclass ConversationRoute(channel: str, scope_type: str, scope_id: str, thread_id: Optional[str] = None, sender_id: Optional[str] = None)
Methods
source method ConversationRoute.route_key() → str
source property ConversationRoute.conversation_kind: str
source property ConversationRoute.is_direct: bool
source property ConversationRoute.is_group: bool
source property ConversationRoute.is_thread: bool
source method ConversationRoute.to_session_key() → SessionKey
source dataclass DeliveryEvent(route: ConversationRoute, kind: str, text: str = '', text_format: str = 'plain', mode: str = 'send', target: Optional[str] = None, binary: Optional[bytes] = None, filename: Optional[str] = None, caption: str = '', controls: Tuple[str, ...] = (), metadata: Dict[str, Any] = field(default_factory=dict))
source class ExecutionAdapter()
source async method ExecutionAdapter.run(self, session: Any, request: str, *, adata: Optional[Any], callbacks: ExecutionCallbacks) → AgentRunResult
source dataclass ExecutionCallbacks(progress_cb: Optional[ProgressCallback] = None, llm_chunk_cb: Optional[ChunkCallback] = None)
source dataclass MessageEnvelope(route: ConversationRoute, text: str, sender_id: str, sender_username: Optional[str] = None, message_id: Optional[str] = None, trigger: str = 'message', explicit_trigger: bool = False, metadata: Dict[str, Any] = field(default_factory=dict))
source class MessagePolicy()
source method MessagePolicy.decide(envelope: MessageEnvelope, state: RuntimeTaskState) → PolicyDecision
source class MessagePresenter()
Bases : Protocol
Methods
source method MessagePresenter.ack(envelope: MessageEnvelope, session: Any) → List[DeliveryEvent]
source method MessagePresenter.queue_started(route: ConversationRoute, queued_count: int) → List[DeliveryEvent]
source method MessagePresenter.draft_open(route: ConversationRoute) → DeliveryEvent
source method MessagePresenter.draft_update(route: ConversationRoute, llm_text: str, progress: str) → DeliveryEvent
source method MessagePresenter.draft_cancelled(route: ConversationRoute) → DeliveryEvent
source method MessagePresenter.analysis_error(route: ConversationRoute, error_text: str) → DeliveryEvent
source method MessagePresenter.typing(route: ConversationRoute) → Optional[DeliveryEvent]
source method MessagePresenter.quick_chat_reply(route: ConversationRoute, text: str) → DeliveryEvent
source method MessagePresenter.quick_chat_fallback(route: ConversationRoute) → DeliveryEvent
source method MessagePresenter.analysis_status(route: ConversationRoute, *, has_media: bool, has_reports: bool, has_artifacts: bool) → Optional[DeliveryEvent]
source method MessagePresenter.final_events(route: ConversationRoute, *, session: Any, user_text: str, llm_text: str, result: AgentRunResult) → List[DeliveryEvent]
source class MessageRuntime(*, router: MessageRouter, presenter: MessagePresenter, execution_adapter: ExecutionAdapter, deliver: DeliveryFn, task_registry: Optional[TaskRegistry] = None, policy: Optional[MessagePolicy] = None)
source property MessageRuntime.task_registry: TaskRegistry
source method MessageRuntime.task_state(route: ConversationRoute) → RuntimeTaskState
source method MessageRuntime.running_task(route: ConversationRoute) → Optional[asyncio.Task]
source method MessageRuntime.get_session(route: ConversationRoute) → Any
source async method MessageRuntime.cancel(self, route: ConversationRoute) → bool
source async method MessageRuntime.handle_message(self, envelope: MessageEnvelope) → PolicyDecision
source staticmethod MessageRuntime.build_full_request(session: Any, text: str) → str
source class MessageRouter(session_manager: Any)
source method MessageRouter.get_session(route: ConversationRoute) → Any
source dataclass PolicyDecision(action: str, should_ignore: bool = False, should_ack: bool = False, should_start: bool = False, should_queue: bool = False, should_quick_chat: bool = False, reason: str = '')
source dataclass RuntimeTaskState(route: ConversationRoute, running: bool, request: str = '', started_at: float = 0.0, pending_count: int = 0)
source class TaskRegistry()
source method TaskRegistry.snapshot(route: ConversationRoute) → RuntimeTaskState
source method TaskRegistry.task_for(route: ConversationRoute) → Optional[asyncio.Task]
source method TaskRegistry.start(route: ConversationRoute, *, envelope: MessageEnvelope, task: asyncio.Task) → None
source method TaskRegistry.finish(route: ConversationRoute) → None
source method TaskRegistry.enqueue(envelope: MessageEnvelope) → int
source method TaskRegistry.pop_pending(route: ConversationRoute) → List[MessageEnvelope]
source async method TaskRegistry.cancel(self, route: ConversationRoute, *, timeout: float = 5.0) → bool